Map Kit unterstützt die Wiederverwendung von Overlays nicht auf die gleiche Weise, wie dies für Anmerkungsansichten unterstützt wird. Einer der Gründe dafür muss sicherlich sein, dass die beiden Objekte nicht analog sind. Überlagerungen sind Modellobjekte, die einen Bereich auf der Karte darstellen, während Anmerkungsansichten Ansichtsobjekte sind, die von Zeit zu Zeit verwendet werden, um den Standort einer Anmerkung auf der Karte anzuzeigen. Die Technik der Wiederverwendung von Ansichtsobjekten (im Gegensatz zur Erstellung einzelner Objekte für jede Verwendung) ist eine Optimierung, die an einigen anderen Stellen in UIKit verwendet wird, insbesondere für Tabellenansichtszellen und verschiedene Teile von Auflistungsansichten. Das View-Reuse-Pattern dient zum Einrichten eines Datenindexes (Tabellen-Indexpfade, Kartenkoordinaten), und dann muss ein Delegat ein geeignetes View-Objekt bereitstellen, das verwendet werden soll, wenn ein bestimmter Index/Ort in Sicht kommt. Wenn das Datenobjekt nicht mehr sichtbar ist, wird das Ansichtsobjekt in einer Warteschlange wiederverwendet.
Eine Annotation ist analog zu einer Überlagerung, und MapKit bietet auch keine Wiederverwendung für sie, und das aus gutem Grund: Sie sind die Daten, die angezeigt werden!
Das analoge Objekt zur Anmerkungsansicht ist ein Overlay-Renderer, der (natürlich!) Rendering für ein Overlay bereitstellt. Ich gehe davon aus, dass diese nicht wiederverwendet werden, weil sie keine View-System-Objekte sind und vermutlich viel leichter sind, so dass die Wiederverwendung wenig Nutzen bringt. Wir finden Hinweise dafür, dass der MapView-Delegierte bis iOS 7.0 ein View-Objekt für Overlays zur Verfügung stellte und dies durch das Renderer-Konzept ersetzt wurde.
Ich hoffe, dass hilft.
Welches Problem verursacht das für Sie?
PS. Auch wenn Leute (wenn das ein Problem ist) tatsächlich Overlays auf einer Karte als "Annotation" platzieren, um das zu umgehen? Wahrscheinlich würde nicht für große Overlays aber als Teil des Overlays möglicherweise Offscreen .... – Greg
PSS. Eigentlich müssen etwa 8000 Overlays im ganzen Land installiert werden, also lade ich sie letztendlich alle im Voraus, oder muss ich sie manuell verwalten, so dass nur eine viel kleinere Anzahl zu einem bestimmten Zeitpunkt geladen wird? d. h. diejenigen, die sichtbar wären – Greg