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