2012-07-24 92 views
8

當MKMapView啓用MKUserTrackingModeFollowWithHeading時,我遇到了MKAnnotationView的問題。如何設置MKAnnotationView的旋轉中心

我使用MKAnnotationView的centerOffset屬性定位了我的圖像。指定針的針尖相對於在圖像的中心座標系的座標是有點反intutive,但我想出了下面的公式:

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

這工作正常,在放大和縮小地圖。引腳的尖端保持其在地圖上的相對位置。

但是,當我啓用MKUserTrackingModeFollowWithHeading時,它將不再工作。引腳圍繞圖像的中心旋轉,而不是尖端。所以當地圖旋轉時,提示並不指向他們應該註釋的位置。

我已經玩了framecenter屬性MKAnnotationView,但我覺得,他們沒有任何影響的針腳alignement。

有趣的是,MKPinAnnotationView似乎根本沒有使用centerOffset,而是改用frame代替。但是,我無法重現這一點。更改我的自定義視圖的frame根本沒有移動它。

感謝任何見解,可以提供:-)

解決方案:

不要使用centerOffset!改爲使用annotationView.layer.anchorPoint。 achor點的座標系也更好。座標範圍爲0.0(上/左)到1.0(下/右)的圖像矩形爲:

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

回答

12

一個朋友問我,讓你知道,你應該「試試這個,例如」:

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

告訴你的朋友,(s)他是我本週的個人英雄:-)非常感謝! – Chris 2012-07-25 08:00:25