Ich füge derzeit durch eine Schleife Anmerkungen zu meiner Map hinzu ... aber die Anmerkungen erscheinen nur auf meiner Karte in Gruppen. Außerdem werden beim Laden nur ungefähr 4 Anmerkungen tatsächlich auf der Karte angezeigt ... aber wenn ich die Karte ein wenig bewege, erscheinen plötzlich alle Anmerkungen, die dort sein sollten.
Wie kann ich alle Anmerkungen einzeln nacheinander an den richtigen Ort laden?
Vielen Dank im Voraus!
Hier ist der Code, den ich verwende, um Anmerkungen hinzuzufügen:
%Vor%Adam,
Diese Lösung ist etwas unordentlich, da ich eines meiner aktuellen Projekte testen musste, aber hoffentlich funktioniert das für Sie.
Zuerst eine Erklärung, es ist wichtig, Daten von der UI-Präsentation zu trennen. Die [MKMapView addAnnotation (s)] sind nur ein Datenupdate zu MKMapView und haben keinen direkten Einfluss auf Animation oder Timing.
Die Delegate-Methode mapView: didAddAnnotationViews: Gibt an, wo das gesamte benutzerdefinierte Darstellungsverhalten definiert werden soll. In Ihrer Beschreibung wollten Sie nicht, dass diese auf einmal angezeigt werden, also müssen Sie Ihre Animationen sequenzieren, anstatt sie gleichzeitig auszuführen.
Eine Methode besteht darin, alle Annotationen auf einmal hinzuzufügen und sie dann mit zunehmenden Animationsverzögerungen hinzuzufügen. Neue Annotationen, die aus welchem Grund auch immer hinzugefügt werden, beginnen ihre Animationen jedoch wieder bei Null.
Mit der folgenden Methode wird eine Animationswarteschlange eingerichtet, in der die Annotation-Ansichten beim Hinzufügen gespeichert werden und die Animation anschließend sequenziell gekettet wird.
Ich habe die Rahmenanimation durch Alpha ersetzt, um mich auf das Animationsproblem zu konzentrieren und es von dem Problem zu trennen, dass einige Elemente nicht angezeigt werden. Mehr dazu nach dem Code ...
%Vor%In Bezug auf Ihr zweites Problem werden Elemente nicht immer angezeigt, bis Sie die Karte verschieben. Ich sehe keine offensichtlichen Fehler in Ihrem Code, aber hier sind einige Dinge, die ich tun würde, um das Problem zu isolieren:
Ein letzter Punkt, um den von Ihnen gewünschten Pin-Drop-Effekt zu erzielen, möchten Sie wahrscheinlich um einen festen Abstand vom ursprünglichen Objekt versetzen, anstatt von annotationVisibleRect abhängig zu sein. Ihre aktuelle Implementierung wird dazu führen, dass Stifte sich abhängig von ihrer Entfernung von der Kante mit unterschiedlichen Geschwindigkeiten bewegen. Gegenstände an der Oberseite werden langsam in Position gebracht, während Gegenstände an der Unterseite schnell an Ort und Stelle fliegen. Apples Standardanimation fällt immer von der gleichen Höhe ab. Ein Beispiel ist hier: Wie kann ich ein benutzerdefinierte "Pin-Drop" -Animation mit MKAnnotationView?
Hoffe, das hilft.
Aktualisierung: Um diesen Code in Aktion zu demonstrieren, habe ich einen Link zu einer modifizierten Version der Seismic-Demo von Apple mit den folgenden Änderungen hinzugefügt:
Siehe: Ссылка
Tags und Links iphone annotations android-mapview