我有一个带有自定义图钉图像的MKAnnotation。但是,引脚(MKAnnotationView)使图像相对于指定的坐标居中。我想将坐标点设置在图像的底部中心,而不是居中。
我尝试过使用annView.centerOffset = CGPointMake(-12, -28);
。但问题是centerOffset
与地图缩放级别无关。
可以在JS API和Android中执行此操作。有没有可能在objective-c中做到这一点?
..弗雷德里克
答案 0 :(得分:131)
您的UIAnnotationView
始终以相同比例绘制,地图的缩放级别无关紧要。这就是centerOffset
未与缩放级别绑定的原因。
annView.centerOffset
就是您所需要的。如果您发现您的引脚位于不正确的位置(例如,当您更改缩放级别时底部中心移动一点),那是因为您没有设置正确的centerOffset。
顺便说一下,如果要在图像的底部中心设置坐标点,则centerOffset的x坐标应为0.0f,因为annotationView默认将图像居中。所以试试:
annView.centerOffset = CGPointMake(0, -imageHeight / 2);
答案 1 :(得分:43)
当用户旋转或缩放地图时,设置centerOffset通常会移动图像,因为锚点仍设置为图像的中心而不是其中心。
您可以将注释的锚点设置为自定义图像的底部中心,如下所示:
yourAnnotation.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
这样,当用户缩放或旋转地图时,您的自定义注释将永远不会从地图上的坐标移动。
答案 2 :(得分:15)
您可以使用本指南找出您的中心偏移。
答案 3 :(得分:1)
如果缩小,现在所有给定的解决方案都会弄乱引脚。到目前为止,我发现的唯一完全可行的解决方案是通过高度增加自定义图像高度。换句话说 - 高度加倍。同时将图钉图像移到顶部,其余部分保持透明。这样,图像的中心将成为推针的底部。
现在无论您放大多少,或者旋转地图,引脚都会保持在您想要的位置的中心位置。
我能想到的一个问题是这个引脚的可点击区域也会增加。
我希望这有帮助!