MKMapViewでを有効にするMKAnnotationView
と、問題が発生します。MKUserTrackingModeFollowWithHeading
MKAnnotationViewのcenterOffsetプロパティを使用して画像を配置しました。画像の中央の座標系を基準にしてピンの先端の座標を指定するのはやや直感に反しますが、次の式を思いつきました。
annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate);
これは、マップをズームインおよびズームアウトする場合に正常に機能します。ピンの先端は、マップ上の相対的な位置を維持します。
ただし、有効MKUserTrackingModeFollowWithHeading
にすると、機能しなくなります。ピンは、先端ではなく、画像の中心を中心に回転します。したがって、マップが回転するとき、ヒントは注釈を付けることになっている場所を指していません。
frame
のとcenter
プロパティを少し試してみMKAnnotationView
ましたが、ピンの配置にはまったく影響がないように感じます。
興味深いことに、MKPinAnnotationView
はまったく使用されていないようですが、代わりにcenterOffset
シフトされています。frame
しかし、これを再現することはできませんでした。カスタムビューのを変更してframe
も、まったく移動しませんでした。
あなたが提供できる洞察に感謝します:-)
解決:
centerOffsetは使用しないでください。annotationView.layer.anchorPoint
代わりに使用してください。achorポイントの座標系もはるかに優れています。座標の範囲は、画像の長方形の0.0(上/左)から1.0(下/右)です。
annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight);