9

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);
4

1 に答える 1

13

ある友人から、「たとえばこれを試してみてください」と教えてほしいと頼まれました。

self.layer.anchorPoint = CGPointMake (0.5f, 1.0f);
于 2012-07-24T15:59:07.007 に答える