2012-07-24 8 views
8

Ich habe ein Problem mit meiner MKAnnotationView s, wenn MKUserTrackingModeFollowWithHeading auf der MKMapView aktiviert ist.So stellen Sie das Rotationszentrum einer MKAnnotationView ein

Ich positionierte meine Bilder mit der Eigenschaft centerOffset des MKAnnotationView. Festlegen der Koordinaten der Spitze relativ Stecknadel auf das Koordinatensystem in der Mitte des Bildes ist etwas Gegen intuitiven, aber ich kam mit der folgenden Formel bis:

annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate); 

Dies funktioniert gut für die Karte ein- und aus . Die Spitzen der Pins behalten ihre relative Position auf der Karte.

Wenn ich jedoch MKUserTrackingModeFollowWithHeading aktivieren, wird es nicht mehr funktionieren. Die Stifte drehen sich um die Mitte des Bildes anstelle der Spitze. Wenn die Karte rotiert, zeigen die Spitzen also nicht auf die Orte, die sie annotieren sollen.

Ich habe ein wenig mit den frame und center Eigenschaften der MKAnnotationView gespielt, aber ich denke, sie haben keine Auswirkungen auf die Ausrichtung der Pins überhaupt.

Interessanterweise scheint die MKPinAnnotationViewcenterOffset überhaupt nicht zu verwenden, sondern eine verschobene frame statt. Dies konnte ich jedoch nicht reproduzieren. Das Ändern der frame meiner benutzerdefinierten Ansicht hat es überhaupt nicht verschoben.

Vielen Dank für alle Einsichten können Sie

Lösung :-)

bieten:

nicht centerOffset verwenden! Verwenden Sie stattdessen annotationView.layer.anchorPoint. Das Koordinatensystem des Achor-Punktes ist ebenfalls viel schöner. Koordinaten liegt im Bereich von 0,0 (oben/links) bis 1,0 (unten/rechts) das Bild Rechtecks:

annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight); 

Antwort

12

Ein Freund mich Sie wissen zu lassen, bittet darum, dass Sie „versuchen, dies zum Beispiel“ sollen:

self.layer.anchorPoint = CGPointMake (0.5f, 1.0f); 
+1

Erzählen Sie Ihrem Freund, (s) er ist mein persönlicher Held der Woche :-) Vielen Dank! – Chris