如何根据选定的注释移动 MKMapView
我有一个 MKMapView,它填充了我的整个视图,但是当选择一个图钉时,我会在地图顶部向上滑动另一个视图。我想移动地图,以便图钉出现在地图可见区域的中心。
很难解释,但希望它是有道理的! 提前致谢。
I have an MKMapView which populates the entirety of my view, but when a pin is selected, I am sliding up another view on top of the map. I want to move the map so the pin will appear in the centre of the visible area of the map.
Difficult to explain but hopefully it makes sense!
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以尝试从地图视图的
visibleMapRect
获取 MKMapRect,将注释的坐标转换为 MKMapPoint,重置 MKMapRect 的原点以使 MKMapPoint 位于适当的位置,然后使用setVisibleMapRect:animated :
将可见区域设置为新的 MKMapRect。例如,如果您想要移动地图,使注释水平居中并垂直向下 25%,您可以执行以下操作:
You could try getting the MKMapRect from
visibleMapRect
for the map view, converting the annotation's coordinate to an MKMapPoint, resetting the MKMapRect's origin so the MKMapPoint is in the appropriate position, and then usingsetVisibleMapRect:animated:
to set the visible region to the new MKMapRect.For example, if you wanted to move the map so the annotation is centered horizontally and 25% of the way down vertically, you could do something like this:
使用 MKMapViewDelegate 方法:
Using MKMapViewDelegate method:
我根据这里的答案在 Swift 4 上构建了它
I built it on Swift 4, based on answers here
我最终得到了以下过程:
** 以注释为中心:**
** 缩放注释:**
-(CGFloat) sizeOfBottom
和-(CGFloat) sizeOfTop
都返回布局指南中覆盖地图视图的面板高度I ended up with following procedures:
** Centering on annotation:**
** Zooming on annotation:**
-(CGFloat) sizeOfBottom
and-(CGFloat) sizeOfTop
both return height of panels covering the mapview from the layout guides