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

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

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

这对于放大和缩小 map 效果很好。销钉的尖端在 map 上保持其相对位置。

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

我已经使用了framecenterMKAnnotationView属性,但我觉得它们对销的对齐没有任何影响。

有趣的是,MKPinAnnotationView似乎根本没有使用centerOffset,而是使用了移位的frame。但是,我无法重现此内容。更改自定义 View 的frame根本不会移动它。

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

解决方案:

不要使用centerOffset!请改用annotationView.layer.anchorPoint。起点的坐标系也好得多。坐标范围是图像矩形的0.0(上/左)到1.0(下/右):
annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight);

最佳答案

一位 friend 要求我让您知道您应该“尝试此操作”:

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

关于mkmapview - 如何设置MKAnnotationView的旋转中心,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11629940/

10-11 04:22