Löschen Sie Markierungen von Google Map in Android

82

Ich habe eine Karte zur Fragmentaktivität hinzugefügt und mehrere Marker mit der Funktion addMarker hinzugefügt, aber ich kann alle Marker entfernen. Ich erhalte eine Benachrichtigung für eine andere Liste von Markern.

Jetzt möchte ich alle Marker entfernen und neue hinzufügen.

eine Möglichkeit, alle Markierungen in der Liste zu halten und einzeln zu entfernen (marker.remove ())

Gibt es einen besseren Weg, um alle Marker zu löschen?

Kasma
quelle
2
Es gibt eine klare () Methode
Marko Niciforovic

Antworten:

201

Wenn Sie "alle Markierungen, Überlagerungen und Polylinien von der Karte entfernen" möchten, verwenden Sie clear()auf IhremGoogleMap .

CommonsWare
quelle
1
Soll ich vorher remove () für alle aufrufen? Ich meine, wenn ich noch eine ArrayList mit diesen Markern habe, habe ich wahrscheinlich immer noch einen aktiven Verweis auf diese Marker, sodass sie auch dann im Speicher bleiben, wenn ich die Karte lösche. Habe ich Recht damit oder lösche das Löschen der Karte die Verweise auf die Markierungen?
Charlie-Blake
5
@ santirivera92: "Soll ich vorher remove () für alle aufrufen?" - AFAIK, das solltest du nicht brauchen. "Wenn ich noch eine ArrayList mit diesen Markern habe, habe ich wahrscheinlich immer noch einen aktiven Verweis auf diese Marker, sodass sie auch dann im Speicher bleiben, wenn ich die Karte lösche" - ja, aber das ist Ihr Code, nicht der von Google . Wenn SieMarker Objekte getrennt von der Karte festhalten , müssen Sie diese loslassen. clear()entfernt sie visuell .
CommonsWare
1
@ Santirivera92: Ja, das sollte es. Nichts anderes sollte sie festhalten.
CommonsWare
8
Beachten Sie auch, dass die clear()Funktion die MarkerIDs nicht zurücksetzt . Grundsätzlich werden Sie nicht m0wieder für neue Markerhinzufügen.
Prasad De Zoysa
2
@Prasad Gibt es eine Möglichkeit, m0 wieder zu bekommen?
Gokhan Arik
2

Wenn Sie keine Polylinien löschen möchten und nur die Markierungen entfernt werden müssen, führen Sie die folgenden Schritte aus.

Erstellen Sie zunächst ein neues Marker-Array wie unten

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

Wenn Sie dann den Marker auf den Google Maps hinzufügen, fügen Sie ihn auch dem Marker-Array hinzu (in diesem Beispiel die AllMarker).

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

                }

Rufen Sie dann schließlich die folgende Methode auf, um alle Markierungen gleichzeitig zu entfernen

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

    }

Rufen Sie von überall an, um alle Markierungen zu entfernen

removeAllMarkers();

Ich habe diese Lösung gefunden, als ich nach einer Möglichkeit gesucht habe, nur die Kartenmarkierungen zu entfernen, ohne die Polylinien zu löschen. Hoffe das wird dir auch helfen.

FRANCIS FERNANDO
quelle