MKAnnotation图像偏移与自定义图钉图像

时间:2011-11-17 10:02:39

标签: iphone objective-c google-maps mkannotationview

我有一个带有自定义图钉图像的MKAnnotation。但是,引脚(MKAnnotationView)使图像相对于指定的坐标居中。我想将坐标点设置在图像的底部中心,而不是居中。

我尝试过使用annView.centerOffset = CGPointMake(-12, -28);。但问题是centerOffset与地图缩放级别无关。

可以在JS API和Android中执行此操作。有没有可能在objective-c中做到这一点?

..弗雷德里克

4 个答案:

答案 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)

您可以使用本指南找出您的中心偏移。

MKAnnotationView centerOffset guide

答案 3 :(得分:1)

如果缩小,现在所有给定的解决方案都会弄乱引脚。到目前为止,我发现的唯一完全可行的解决方案是通过高度增加自定义图像高度。换句话说 - 高度加倍。同时将图钉图像移到顶部,其余部分保持透明。这样,图像的中心将成为推针的底部。

现在无论您放大多少,或者旋转地图,引脚都会保持在您想要的位置的中心位置。

我能想到的一个问题是这个引脚的可点击区域也会增加。

我希望这有帮助!