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

fre*_*rik 49 iphone google-maps objective-c mkannotationview

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

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

可以在JS API和Android中执行此操作.有没有可能在objective-c中这样做?

..fredrik

Zol*_*eas 138

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

annView.centerOffset是你需要的.如果您发现您的引脚位于不正确的位置(例如,当您更改缩放级别时底部中心移动一点),那是因为您没有设置正确的centerOffset.

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

annView.centerOffset = CGPointMake(0, -imageHeight / 2);
Run Code Online (Sandbox Code Playgroud)

  • 超!为了不查找图像高度,您可以编写`annView.centerOffset = CGPointMake(0,-annView.frame.size.height/2);` (6认同)
  • 但要做到这一点,你必须查找(较慢)或硬编码(坏)图像尺寸.更好的解决方案(可能是更新的功能?)是Pancho的回答,使用`layer.anchorPoint`. (2认同)

Pan*_*cho 44

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

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

yourAnnotation.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
Run Code Online (Sandbox Code Playgroud)

这样,当用户缩放或旋转地图时,您的自定义注记将永远不会从地图上的坐标移动.


ric*_*chy 18

您可以使用本指南找出中心偏移量.

MKAnnotationView centerOffset指南