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

我有一个自定义图钉的MKAnnotation。 但是,引脚(MKAnnotationView)将图像与指定坐标相关联。 我想要设置图像底部中心的坐标点,而不是中心。

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

在JS API和Android中都可以做到这一点。 有没有可能在objective-c中做到这一点?

..fredrik

您的UIAnnotationView始终以相同比例绘制,地图的缩放级别无关紧要。 这就是为什么centerOffset不与缩放级别绑定。

annView.centerOffset是你所需要的。 如果你看到你的别针不在正确的位置(例如,当你改变缩放级别时底部中心稍微移动一点),这是因为你没有设置正确的centerOffset。

顺便说一下,如果要设置图像底部中心的坐标点,则centerOffset的x坐标应为0.0f,因为默认情况下,annotationView将图像居中。 所以试试:

 annView.centerOffset = CGPointMake(0, -imageHeight / 2); 

当用户旋转或放大地图时,设置centerOffset常常会移动图像,因为锚点仍然设置为图像的中心而不是其中心。

您可以将注释的锚点设置为自定义图像的底部中心,如下所示:

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

这样,当用户放大或旋转地图时,自定义注释永远不会从地图上的坐标移开。

你可以使用这个指南找出你的中心偏移量。

MKAnnotationView中心的引导

现在所有的解决scheme,如果你缩小的话,就会搞砸了。 到目前为止,我发现的唯一完全可行的解决scheme是通过高度增加您的自定义图像高度。 换句话说 – 高度的两倍。 同样将针图像移动到顶部,其余部分保持透明。 这样图像的中心将成为您的图钉的底部点。

现在,不pipe你放大多less,或者如果你旋转地图的针将保持在你想要的位置为中心。

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

我希望这有帮助!