Borrar marcadores de Google Map en Android

83

Agregué un mapa sobre la actividad de los fragmentos y agregué varios marcadores usando la función addMarker, pero puedo eliminar todos los marcadores, recibo una notificación para diferentes listas de marcadores,

Ahora quiero eliminar todos los marcadores y agregar uno nuevo.

una forma de mantener todos los marcadores en la lista y eliminarlos uno por uno, (marker.remove ())

¿Hay alguna manera mejor de borrar todos los marcadores?

Ashish Kasma
fuente
2
hay método clear ()
Marko Niciforovic

Respuestas:

203

Si desea borrar "todos los marcadores, superposiciones y polilíneas del mapa", utilice clear()en suGoogleMap .

CommonsWare
fuente
1
¿Debo llamar a remove () en todos ellos antes de hacer eso? Quiero decir, si todavía tengo una ArrayList con esos marcadores, supongo que todavía tengo una referencia activa a esos marcadores, por lo que permanecerán en la memoria incluso si borro el mapa. ¿Tengo razón en esto o borrar el mapa borra las referencias a los marcadores?
Charlie-Blake
5
@ santirivera92: "¿Debería llamar a remove () en todos ellos antes de hacer eso?" - AFAIK, no debería ser necesario. "si todavía tengo una ArrayList con esos marcadores, supongo que todavía tengo una referencia activa a esos marcadores, por lo que permanecerán en la memoria incluso si borro el mapa", sí, pero ese es su código, no el de Google. . Si se aferran a Markerlos objetos por separado del mapa, usted tiene que dejar de lado aquellos. clear()los eliminará visualmente .
CommonsWare
1
@ santirivera92: Sí, debería. Nada más debería sujetarlos.
CommonsWare
8
También tenga en cuenta que la clear()función no restablecerá los MarkerID. Básicamente, no lo volverá a obtener m0por nuevas Markeradiciones.
Prasad De Zoysa
2
@Prasad ¿Hay alguna forma de volver a obtener m0?
Gokhan Arik
4

Si no desea borrar polilíneas y solo es necesario eliminar los marcadores, siga los pasos a continuación.

Primero cree una nueva matriz de marcadores como a continuación

List<Marker> AllMarkers = new ArrayList<Marker>();

Luego, cuando agregue el marcador en los mapas de Google, agréguelos también a la matriz de marcadores (sus AllMarkers en este ejemplo)

for(int i=0;i<places.length();i++){

                LatLng location = new LatLng(Lat,Long);
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(location);
                markerOptions.title("Your title");

                 Marker mLocationMarker = Map.addMarker(markerOptions); // add the marker to Map
                    AllMarkers.add(mLocationMarker); // add the marker to array

                }

luego, finalmente, llame al método siguiente para eliminar todos los marcadores a la vez

 private void removeAllMarkers() {
        for (Marker mLocationMarker: AllMarkers) {
            mLocationMarker.remove();
        }
        AllMarkers.clear();

    }

llamar desde cualquier lugar para eliminar todos los marcadores

removeAllMarkers();

Encontré esta solución cuando estaba buscando una forma de eliminar solo los marcadores del mapa sin borrar las polilíneas. Espero que esto también te ayude.

FRANCIS FERNANDO
fuente