Ich arbeite mit einem NSMutableArray
von Objekten, die dem MKAnnotation
Protokoll entsprechen. Meine Frage ist im Laufe der Zeit neue Objekte zum Array hinzugefügt werden, kann mir jemand sagen, was die bevorzugte Methode für die Aktualisierung der Anmerkungen in der MapView ist. Sollte ich alle Pins entfernen, bevor ich das aktualisierte Array hinzufüge, oder wäre es besser, vorhandene Pins im Objekt MKAnnotation
zu markieren und nur die neuen (nicht markierten) Pins hinzuzufügen?MKMapView Annotationen von aktualisiertem Array aktualisieren?
Antwort
Das Entfernen aller Pins und das Zurücksetzen des gesamten Arrays einschließlich der neuen Annotationen führt zu Flimmern und unnötigen Neuzeichnen von Pins, die nicht geändert wurden.
Wenn das Flimmern nicht erwünscht ist oder aus irgendeinem Grund eine vollständige Aktualisierung erforderlich ist, sollten Sie der Kartenansicht nur mitteilen, dass die neuen Pins hinzugefügt werden sollen.
nach dem Hauptanmerkungs-Array mit den neuen Stiften aktualisiert wird, eine so genannte temporäre Array konstruieren sagen newAnnots
Verweise auf die neuen Anmerkungen in dem Hauptarray enthalten und newAnnots
auf die addAnnotations:
Methode der Kartenansicht passieren. Das temporäre Array kann anschließend verworfen werden.
Anstatt jedoch "neue" Anmerkungen zu kennzeichnen, können Sie einfach überprüfen, ob das Anmerkungsobjekt in Ihrem Haupt-Array bereits im Array annotations
der Kartenansicht vorhanden ist. Zum Beispiel:
if (![mapView.annotations containsObject:annot_from_your_main_array]) {
[newAnnots addObject:annot_from_your_main_array];
}
Im Vergleich mit den Anmerkungen Arrays Kartenansicht funktioniert nur, wenn die Beschriftungsobjekte in der Haupt Array sind die eigentlichen Anmerkungen, die Sie in der Kartenansicht geben in addAnnotation:
oder addAnnotations:
. Wenn Ihr Haupt-Array "aktualisiert" wird, sollten Sie nur die neuen Anmerkungen hinzufügen, anstatt das gesamte Array von Grund auf neu zu erstellen. Wenn dies der Fall ist, stimmen die Annotationsreferenzen nicht mit denen im Array der Kartenansicht überein.
Dasselbe gilt, wenn Sie Anmerkungen zu einem Update entfernen. Die entfernten Annotationen können zu einer temporären "Remove" -Liste hinzugefügt werden (indem überprüft wird, ob Annotationen im Array der Map-Ansicht in Ihrem Array vorhanden sind) und an removeAnnotations:
übergeben werden.
Hinweis: Wenn Sie die Koordinaten einer vorhandenen Anmerkung in Ihrem Hauptarray aktualisieren, aktualisiert die Kartenansicht automatisch die Position der Anschlussstifte, solange das Anmerkungsobjekt in Ihrem Array die Methode setCoordinate:
implementiert.
- 1. Force MKMapView viewForAnnotation zu aktualisieren
- 2. MKMapView - setRegion: animiert macht MKMapView nicht mehr auf iOS7
- 3. Stop MKMapView von Neuladen
- 4. Abgerundete Ecken von MKMapView
- 5. Wiederverwenden von Annotationen durch Erstellen von Meta-Annotationen
- 6. Hinzufügen von Anmerkungen zu MKMapView in einer bestimmten Layer-Reihenfolge
- 7. Zusammensetzung von Java-Annotationen
- 8. Array von Annotationen als Parameter für eine Annotation, in Scala
- 9. Wie füge ich nur neue Anmerkungen zu MKMapView hinzu?
- 10. Verwenden von UIActivityIndicator in MKMapView
- 11. Verwendung von MKAnnotationView ohne MKMapView?
- 12. Benutzerstandort von einem MKMapView beziehen
- 13. Positionieren von GMSMapView zum Anzeigen mehrerer Annotationen auf einmal
- 14. MKMapView, animateDrop?
- 15. MKMapView Refresh nach Stiftbewegungen
- 16. Probleme beim Entfernen von Anmerkungen aus einer MKMapView
- 17. Zoom MKMapView zum Anpassen von Polylinienpunkten
- 18. Generieren von Annotationen JavaPoet mit
- 19. Java-Annotationen
- 20. JFreeChart Annotationen
- 21. Verschiedene Informationen für verschiedene Pin-Annotationen
- 22. Aktuellen Benutzerstandort mit MKMapView anzeigen?
- 23. Mongoose, Werte im Array von Objekten aktualisieren
- 24. MongoDB mehrere Datensätze von Array aktualisieren
- 25. Elasticsearch Scripting: Aktualisieren von Array-Wert
- 26. Typescript Annotationen
- 27. testng - Erstellen von KnownFault- und IntermittentFailure-Annotationen
- 28. Benutzerdefinierte Pin-Animation - MKMapView
- 29. MKMapView Linker Fehler
- 30. Rubin - gem erstellen: nachladen Konsole mit aktualisiertem gem Inhalt
Vielen Dank, dass Sie sich die Zeit genommen haben, eine so ausführliche Antwort zu schreiben, sehr hilfreich. – fuzzygoat