9

在 MKMapView 上启用时,我MKAnnotationView的 s 出现问题。MKUserTrackingModeFollowWithHeading

我使用 MKAnnotationView 的 centerOffset 属性定位我的图像。指定针尖相对于图像中心坐标系的坐标有点违反直觉,但我想出了以下公式:

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

这适用于放大和缩小地图。大头针的尖端保持它们在地图上的相对位置。

但是,当我启用时MKUserTrackingModeFollowWithHeading,它将不再起作用。Pins 围绕图像的中心而不是尖端旋转。因此,当地图旋转时,提示不会指向它们应该注释的位置。

我已经玩过frame和的center属性MKAnnotationView,但我觉得,它们对引脚的对齐没有任何影响。

有趣的是,MKPinAnnotationView似乎根本没有使用centerOffset,而是转移frame了。但是,我无法重现这一点。更改frame我的自定义视图根本没有移动它。

感谢您提供的任何见解:-)

解决方案:

不要使用中心偏移!改为使用annotationView.layer.anchorPoint。锚点的坐标系也更好。图像矩形的坐标范围从 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 回答