在MKMapView上启用MKAnnotationView
时,我的MKUserTrackingModeFollowWithHeading
出现了问题。
我使用MKAnnotationView的centerOffset属性定位了图像。指定销的尖端相对于图像中心的坐标系的坐标有点反推,但我想出了以下公式:
annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate);
这对于放大和缩小 map 效果很好。销钉的尖端在 map 上保持其相对位置。
但是,当我启用
MKUserTrackingModeFollowWithHeading
时,它将不再起作用。销绕图像中心而不是尖端旋转。因此,本地图旋转时,提示将不会指向应标注的位置。我已经使用了
frame
的center
和MKAnnotationView
属性,但我觉得它们对销的对齐没有任何影响。有趣的是,
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/