En la nueva API de Google Maps para Android, podemos agregar un marcador , pero no hay forma de eliminarlo (fácilmente).
Mi solución es mantener los marcadores en un mapa y volver a dibujar el mapa cuando quiero eliminar un marcador, pero no es muy eficiente.
private final Map<String, MarkerOptions> mMarkers = new ConcurrentHashMap<String, MarkerOptions>();
private void add(String name, LatLng ll) {
final MarkerOptions marker = new MarkerOptions().position(ll).title(name);
mMarkers.put(name, marker);
runOnUiThread(new Runnable() {
@Override
public void run() {
mMap.addMarker(marker);
}
});
}
private void remove(String name) {
mMarkers.remove(name);
runOnUiThread(new Runnable() {
@Override
public void run() {
mMap.clear();
for (MarkerOptions item : mMarkers.values()) {
mMap.addMarker(item);
}
}
});
}
¿Alguien tiene una idea mejor?
android
google-maps
Jonas
fuente
fuente
Respuestas:
La firma del método para
addMarker
es:Entonces, cuando agrega un marcador a un
GoogleMap
al especificar las opciones para el marcador, debe guardar elMarker
objeto que se devuelve (en lugar delMarkerOptions
objeto que utilizó para crearlo). Este objeto le permite cambiar el estado del marcador más adelante. Cuando haya terminado con el marcador, puede llamarMarker.remove()
para eliminarlo del mapa.Por otro lado, si solo desea ocultarlo temporalmente, puede alternar la visibilidad del marcador llamando
Marker.setVisible(boolean)
.fuente
Agregue el marcador al mapa como este
Entonces podrás usar el método remove, eliminará solo ese marcador
fuente
para borrar todos los garabatos en el mapa usa
fuente
Si existe un marcador, elimine el último marcador. si el marcador no existe crea el marcador actual
fuente
Si usa el lenguaje Kotlin, simplemente agregue este código:
Crear variables globales de
GoogleMap
yMarker
tipos.Utilizo marcador variable para hacer que el valor del marcador variable pueda cambiar directamente
Y uso esta función / método para agregar el marcador en mi mapa:
Después de crear la función, coloco este código en
onMapReady()
para eliminar el marcador y crear uno nuevo:Es adicional si desea mostrar la ubicación de la dirección cuando hace clic en el marcador, agregue este código para ocultar y mostrar la dirección del marcador, pero necesita un método para obtener la ubicación de la dirección. Obtuve el código de esta publicación: ¿Cómo obtener la dirección completa de latitud y longitud?
fuente
usa el siguiente código:
una vez que haga clic en "un marcador" , puede eliminarlo.
fuente
Solo una NOTA, algo que perdí horas rastreando esta noche ...
Si decide retener un marcador por alguna razón, después de haberlo ELIMINADO de un mapa ... getTag devolverá NULL, aunque los valores de get restantes regresarán con los valores que estableció cuando se creó el marcador. .
El valor TAG se establece en NULL si alguna vez elimina un marcador y luego intenta hacer referencia a él.
Me parece como un insecto...
fuente
1. Si desea eliminar un marcador, puede hacerlo ya
marker.remove();
que también puede ocultar el marcador en lugar de eliminarlo comoy hacerlo visible más tarde cuando sea necesario.
2. Sin embargo, si desea eliminar todos los marcadores del mapa, use la
map.clear();
Nota:
map.clear();
también eliminará,Polylines, Circles
etc.3. Si no desea eliminar,
Polylines, Circles
etc., utilice un bucle a la longitud del marcador (si tiene varios marcadores) para eliminarlos. Vea el ejemplo aquí O configúrelos Visible falso Y no lo usemap.clear();
en tal caso.fuente
Hacer una variable global para realizar un seguimiento del marcador
// Eliminar marcador antiguo
// Agrega un marcador actualizado y mueve la cámara
fuente
Cree una matriz con todos los marcadores en agregar en el mapa.
Más tarde, use:
fuente
Para aquellos que siguen el ejemplo en este proyecto GoogleMaps - MapWithMarker , puede eliminar el marcador al hacerlo
fuente