Ich habe eine modale Ansicht in meiner App, die eine UIMapView anzeigt. Ich füge dann eine große Anzahl von Anmerkungen (über 800) zu dieser Kartenansicht hinzu (Code unten).
Das Problem ist, dass der Benutzer gezwungen wird, eine Minute oder so zu warten, während alle Pins geladen werden. Auch die App wird träge sobald alle 800 Pins auf der Karte sind.
Kann jemand vorschlagen, wie ich meinen Code unten verbessern kann?
Danke.
%Vor%Die zwei größten Geschwindigkeitsverbesserungen, die Sie hier machen können, sind:
UniqueID
gesetzt wird. Um es festzulegen, durchläuft der Code jedes Mal, wenn eine Anmerkungsansicht erstellt wird, alle Annotationen (was immer passieren kann, wenn die Kartenansicht gezoomt oder gescrollt wird - nicht nur die Anfangszeit). Zuerst müssen Sie in der Methode UniqueID
nach dem viewForAnnotation
suchen und den Anmerkungsbezeichner mit einem Schaltflächen-Tag versehen. Fügen Sie der benutzerdefinierten Anmerkungsklasse UniqueID
als Eigenschaft hinzu. MyLocation
und legen Sie die Eigenschaft fest, wenn Sie die Annotation selbst in addPins
:
Sie könnten auch uniqueID
als Parameter zur Methode initWithName
hinzufügen, anstatt die Eigenschaft separat zuzuweisen.
Um die Wiederverwendung der Anmerkungsansicht zu implementieren, sollte die Methode viewForAnnotation
wie folgt aussehen:
Um schließlich auf die Schaltfläche "drücken" zu reagieren und herauszufinden, für welche UniqueID
die Details angezeigt werden sollen, implementieren Sie die calloutAccessoryControlTapped
-Delegatenmethode:
Nach all diesen Änderungen nimmt nur das anfängliche Laden der Anmerkungen die meiste Zeit in Anspruch. Wenn das immer noch ein Problem ist, besteht eine Lösung darin, nur Anmerkungen hinzuzufügen, die in der aktuell angezeigten Region sichtbar wären, und Anmerkungen hinzuzufügen / zu entfernen, wenn der Benutzer den sichtbaren Bereich ändert.
Ich stimme Anna vollkommen zu. Bedenken Sie jedoch, dass 800 AnnotationViews gleichzeitig zu einer extrem verzögerten Schnittstelle führen. Wenn also Ihre Karte Benutzerinteraktionen wie Scrollen oder Zoomen ermöglichen soll, implementieren Sie besser eine Art Clustering Ihrer Anmerkungsansichten.
Tags und Links objective-c iphone ios ipad mkmapview