ios - 跟踪 MKMapView 的中心坐标

标签 ios mkmapview tracking key-value-observing

我需要在用户缩放/平移 map 时准确跟踪 MKMapViewcenterCoordinate,即 regionWillChangeAnimated:regionDidChangeAnimated: 事件。

我通过尝试将 MKAnnotation 锁定到 map 中心来测试以下方法。不幸的是,它们都不够好:

  • 使用 UIPanGestureRecognizer(如 here 所述):这在触摸显示屏时效果很好,但在触摸手势完成后 map 动画化时不会更新。此外,更新滞后于实际的 centerCoordinate

  • 使用 UIScrollViewDelegate I subclassed MKMapView接收 scrollViewDidScroll: 事件。这行得通,但不会在每次滚动增量时触发该事件,从而导致更新不稳定。

  • 使用KVO 通知:关注this模式,我试图观察 mapview 的 centerCoordinate。它适用于 userLocation,但似乎没有为 centerCoordinate 发送通知。

关于如何有效准确地跟踪 centerCoordinate 有什么想法吗?

KVO 似乎是最好的选择。是否有技巧可以使其与 MKMapViewcenterCoordinate 属性一起使用?

最佳答案

如果我理解正确的话,您是在尝试让某些东西(在您的情况下是注释)始终位于屏幕中央,对吗? 不确定此注释的用途,但可以在 map 顶部放置另一个透明 View 作为注释(您也可以使此 View 与 map 大小相同,并将其 subview 作为注释)。它会对用户产生相同的影响。比起该区域确实发生了变化,您可以获得 centerCoordinate 并进行任何您需要做的处理。我不认为您需要在用户平移或捏合 map 时进行任何处理......更不用说注释意味着具有固定坐标。

关于ios - 跟踪 MKMapView 的中心坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336177/

相关文章:

ios - Xcode 运行时错误无法加载 "_IBBrokenImage_"

iphone - 无法将 UIMapView 获取到 "zoom"/setRegion : when the map is loaded for the first time

events - 订阅表单(在Google Analytics(分析)中提交事件跟踪)

c++ - OpenCv:如何将 Mat::Rect 保存到文件中?

ios - 更新等待开发者发布的应用程序

ios - 确定加载当前 UIViewController 的 UIViewController

android - 在移动设备上打开 Sans 渲染不正确

ios - 单击注释两次并在第二次单击时执行操作

iPhone 开发 - CLLocationManager 与 MapKit

google-analytics - 为没有域名扩展的网站设置谷歌分析