Ich habe ein Problem mit meinem MKAnnotationView
s, wenn MKUserTrackingModeFollowWithHeading
in MKMapView aktiviert ist.
Ich positionierte meine Bilder mit der Eigenschaft centerOffset des MKAnnotationView. Die Koordinaten der Spitze des Stiftes relativ zum Koordinatensystem in der Mitte des Bildes anzugeben, ist etwas kontrapunktisch, aber ich habe die folgende Formel gefunden:
%Vor%Dies funktioniert gut, um die Karte ein- und auszuzoomen. Die Spitzen der Pins behalten ihre relative Position auf der Karte.
Wenn ich MKUserTrackingModeFollowWithHeading
jedoch aktiviere, funktioniert es nicht mehr. Die Stifte drehen sich um die Mitte des Bildes anstelle der Spitze. Wenn also die Karte rotiert, zeigen die Spitzen nicht auf die Orte, die sie mit Anmerkungen versehen sollen.
Ich habe ein bisschen mit den Eigenschaften frame
und center
von MKAnnotationView
herumgespielt, aber ich habe das Gefühl, dass sie keinerlei Auswirkungen auf die Ausrichtung der Pins haben.
Interessanterweise scheint die MKPinAnnotationView
nicht centerOffset
, sondern eine verschobene frame
zu verwenden. Dies konnte ich jedoch nicht reproduzieren. Das Ändern der frame
meiner benutzerdefinierten Ansicht hat es überhaupt nicht verschoben.
Vielen Dank für Ihre Einsichten: -)
Lösung:
Verwenden Sie nicht centerOffset! Verwenden Sie stattdessen annotationView.layer.anchorPoint
. Das Koordinatensystem des Achor-Punktes ist ebenfalls viel schöner. Die Koordinaten reichen von 0.0 (oben / links) bis 1.0 (unten / rechts) des Bildrechtecks:
Tags und Links mkmapview mkannotationview mkpinannotationview