Wyczyść znaczniki z mapy Google w systemie Android

83

Dodałem mapę na aktywność fragmentu i dodałem kilka markerów za pomocą funkcji addMarker, ale jestem w stanie usunąć wszystkie markery, otrzymuję powiadomienie o innej liście markerów,

Teraz chcę usunąć wszystkie znaczniki i dodać nowy.

jeden sposób na zachowanie wszystkich znaczników na liście i usuwanie ich jeden po drugim, (marker.remove ())

Czy jest lepszy sposób, aby usunąć wszystkie znaczniki.

Ashish Kasma
źródło
2
istnieje metoda clear ()
Marko Niciforovic

Odpowiedzi:

203

Jeśli chcesz usunąć „wszystkie znaczniki, nakładki i polilinie z mapy”, użyj clear()na swoimGoogleMap .

CommonsWare
źródło
1
Czy powinienem wywołać metodę remove () na nich wszystkich przed zrobieniem tego? To znaczy, jeśli nadal mam ArrayList z tymi Markerami, przypuszczam, że nadal mam aktywne odniesienie do tych Markerów, więc pozostaną w pamięci, nawet jeśli wyczyszczę mapę. Czy mam rację, czy też wyczyszczenie mapy powoduje usunięcie odniesień do Znaczników?
Charlie-Blake
5
@ santirivera92: "Czy powinienem wywołać funkcję remove () na nich wszystkich przed zrobieniem tego?" - AFAIK, nie powinieneś. „jeśli nadal mam ArrayList z tymi markerami, przypuszczam, że nadal mam aktywne odniesienie do tych znaczników, więc pozostaną w pamięci, nawet jeśli wyczyszczę mapę” - tak, ale to jest twój kod, a nie Google . Jeśli jesteś trzymać Markerobiektów oddzielnie od mapy, ty musisz puścić tych. clear()usunie je wizualnie .
CommonsWare,
1
@ santirivera92: Tak, powinno. Nic innego nie powinno ich trzymać.
CommonsWare,
8
Należy również pamiętać, że clear()funkcja nie zresetuje Markeridentyfikatorów. Zasadniczo nie dostaniesz m0ponownie za nowe Markerdodanie.
Prasad De Zoysa
2
@Prasad Czy jest jakiś sposób na ponowne uzyskanie m0?
Gokhan Arik
4

Jeśli nie chcesz czyścić polilinii i chcesz usunąć tylko znaczniki, wykonaj poniższe czynności.

Najpierw utwórz nową tablicę znaczników, jak poniżej

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

Następnie, gdy dodasz znacznik na mapach Google, dodaj je również do tablicy Marker (w tym przykładzie wszystkieMarkery)

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

                }

następnie w końcu wywołaj poniższą metodę, aby usunąć wszystkie znaczniki naraz

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

    }

zadzwoń z dowolnego miejsca, aby usunąć wszystkie znaczniki

removeAllMarkers();

Znalazłem to rozwiązanie, gdy szukałem sposobu na usunięcie tylko znaczników mapy bez czyszczenia polilinii. Mam nadzieję, że to też ci pomoże.

FRANCIS FERNANDO
źródło