2010-11-29 14 views
4

Ich habe ein Programm, das ein ItemizedOverlay und eine Karte erstellt. Beim Start geht alles gut.Wie lösche ich ein ItemizedOverlay in Android?

Wenn Sie Backhilfen wieder öffnen Sie die App zu schließen, ich bin mit onRestart() aktualisierte Informationen von meinem Server zu erhalten und die Karte zu aktualisieren. Das Problem besteht darin, dass das ItemizedOverlay zu diesem Zeitpunkt noch die alten Elemente enthält und anschließend die neuen Daten zu den vorhandenen Daten hinzufügt.

Ich bin auf der Suche nach einer Möglichkeit, die ItemizedOverlay zu räumen. Es scheint kein ItemizedOveraly.clear oder eine ähnliche Funktion zu sein.

Ideen darüber, wie ich das machen kann/warum ist es nicht offensichtlich?

Antwort

13

Ein typisches benutzerdefiniertes Overlay sieht so aus. Es kapselt die verschiedenen OverlayItems, die auf der Karte in einer Liste angezeigt werden.

Methoden können exponiert werden, um einzelne Overlay-Elemente hinzuzufügen/zu entfernen, aber auch die Overlay-Elemente zu entfernen (Clear-Methode).

Entfernen eines einzelnen overlayitem

MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0); 
sitesOverlay.removeOverlay(overlay); 

Fügen Sie ein einzelnes overlayItem

MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0); 
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet")); 

entfernen alle overlayItems

MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0); 
sitesOverlay.clear(); 
+7

Ich begegne 'ArrayIndexOutOfBoundsException', rufe sogar' clear() 'und' populate() 'auf, wenn Sie die Karte berühren (die Position des entfernten Elements). Die Problemumgehung ist das Aufrufen von 'setLastFocusedIndex (-1)' vor 'populate', Details finden Sie in [diesem Artikel] (http://bit.ly/ID45TU) – xinthink

+0

@ddewaele Beliebiges Beispiel oder Beispiellink für diesen .. . – NagarjunaReddy

1

Sie erstellen Ihre eigene ItemizedOverlay sublcass wenn ein MapView verwendet wird. Sie können eine clear() Methode hinzufügen, wenn Sie möchten.

+0

Oka y ... aber was würde ich in die clear() -Methode setzen? Wie entleere ich das ItemizedOverlay? – Chris