Android'de Google Haritasındaki işaretleri temizleyin


83

Parça etkinliğine harita ekledim ve addMarker işlevini kullanarak birkaç işaretçi ekledim, ancak tüm işaretçileri kaldırabiliyorum, farklı işaretçi listesi için bildirim alıyorum,

Şimdi tüm işaretçileri kaldırıp yenisini eklemek istiyorum.

tüm işaretçileri listede tutmanın ve tek tek kaldırmanın tek yolu, (marker.remove ())

Tüm işaretçileri temizlemenin daha iyi bir yolu var mı?


2
net () bir yöntem var
Marko Niciforovic

Yanıtlar:


203

Eğer, "haritadan bütün belirteçler, bindirmeler ve devamlı çizgiler" silmek istiyorsanız kullanımını clear()sizinle ilgili şuGoogleMap .


1
Bunu yapmadan önce hepsinde remove () 'i çağırmalı mıyım? Demek istediğim, bu İşaretleyicilerle hala bir ArrayList'im varsa, sanırım bu İşaretleyicilere hala aktif bir referansım var, bu yüzden haritayı temizlesem bile bellekte kalacaklar. Bu konuda haklı mıyım yoksa haritayı temizlemek İşaretçilerin referanslarını siliyor mu?
Charlie-Blake

5
@ santirivera92: "Bunu yapmadan önce hepsinde remove () 'i çağırmalı mıyım?" - AFAIK, buna gerek yok. "Bu İşaretçilerle hala bir DiziListem varsa, sanırım bu İşaretçiler için hala aktif bir referansım var, bu yüzden haritayı temizlesem bile bellekte kalacaklar" - evet, ama bu sizin kodunuz, Google'ın değil . Eğer siz tutunmak Markerharitadan ayrı nesneler, sen o gitmesine izin gerekiyor. clear()onları görsel olarak kaldıracaktır .
CommonsWare

1
@ santirivera92: Evet, olmalı. Onları başka hiçbir şey tutmamalı.
CommonsWare

8
Ayrıca, clear()işlevin Markerkimlikleri sıfırlamayacağını unutmayın . Temel olarak m0yeni Markerekleme için tekrar almayacaksınız .
Prasad De Zoysa

2
@Prasad Tekrar m0 almanın bir yolu var mı?
Gökhan Arık

4

Çoklu çizgileri temizlemek istemiyorsanız ve yalnızca işaretlerin kaldırılması gerekiyorsa aşağıdaki adımları izleyin.

Önce aşağıdaki gibi yeni bir Marker Dizisi oluşturun

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

Daha sonra, işaretleyiciyi google haritalarına eklediğinizde, bunları Marker Dizisine de ekleyin (bu örnekte AllMarkers)

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

                }

son olarak tüm işaretleyicileri bir kerede kaldırmak için aşağıdaki yöntemi çağırın

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

    }

tüm işaretçileri kaldırmak için her yerden arayın

removeAllMarkers();

Bu çözümü, çoklu çizgileri temizlemeden yalnızca harita işaretleyicilerini kaldırmanın bir yolunu ararken buldum. Umarım bu da size yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.