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?


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 .


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.