我需要在用户缩放/平移 map 时准确跟踪 MKMapView
的 centerCoordinate
,即 regionWillChangeAnimated:
和 regionDidChangeAnimated:
事件。
我通过尝试将 MKAnnotation
锁定到 map 中心来测试以下方法。不幸的是,它们都不够好:
使用
UIPanGestureRecognizer
(如 here 所述):这在触摸显示屏时效果很好,但在触摸手势完成后 map 动画化时不会更新。此外,更新滞后于实际的centerCoordinate
。使用
UIScrollViewDelegate
I subclassed MKMapView接收scrollViewDidScroll:
事件。这行得通,但不会在每次滚动增量时触发该事件,从而导致更新不稳定。使用KVO 通知:关注this模式,我试图观察 mapview 的
centerCoordinate
。它适用于userLocation
,但似乎没有为centerCoordinate
发送通知。
关于如何有效准确地跟踪 centerCoordinate
有什么想法吗?
KVO 似乎是最好的选择。是否有技巧可以使其与 MKMapView
的 centerCoordinate
属性一起使用?
最佳答案
如果我理解正确的话,您是在尝试让某些东西(在您的情况下是注释)始终位于屏幕中央,对吗? 不确定此注释的用途,但可以在 map 顶部放置另一个透明 View 作为注释(您也可以使此 View 与 map 大小相同,并将其 subview 作为注释)。它会对用户产生相同的影响。比起该区域确实发生了变化,您可以获得 centerCoordinate 并进行任何您需要做的处理。我不认为您需要在用户平移或捏合 map 时进行任何处理......更不用说注释意味着具有固定坐标。
关于ios - 跟踪 MKMapView 的中心坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336177/