Swift 获取地图中显示的可见注释/集群

Posted

技术标签:

【中文标题】Swift 获取地图中显示的可见注释/集群【英文标题】:Swift obtain visible annotations/clusters shown in map 【发布时间】:2018-07-02 22:45:52 【问题描述】:

我目前正在开发一个应用程序,我将用户图像作为注释加载到地图上。目前,我使用 API 在 vi​​ewForAnnotation 中为每个图像注释加载图像,如果用户有超过几千张照片,则每次都会调用此图像加载函数并显着降低性能。

无论如何,我是否只能获取当前地图上显示的注释,即只有用户可见的注释和注释集群? Apple 使用 visibleMapRect 的注释 API(in:) 基本上返回每个注释,而我只想要高级或当前显示的注释。例如,在下面链接的图像中,出现了 2 个注释,但这 2 个注释是数百个注释的集群。有没有办法只为这两个而不是每个注释加载图像?

【问题讨论】:

欢迎来到 ***。请向我们展示您的代码。 嘿,你有没有办法解决它?我遇到了完全相同的问题,我无法将下载图像放在 MKAnnotationView 的背景中,因为地图的性能下降了。 【参考方案1】:

你可以这样检查:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? 
    if annotation is MKClusterAnnotation 
        // Need to load images
    
    ...

【讨论】:

问题是地图上可能存在集群注释和普通注释的组合,那么有没有办法获得所有可见的注释(地图上当前显示的所有注释)?

以上是关于Swift 获取地图中显示的可见注释/集群的主要内容,如果未能解决你的问题,请参考以下文章

MKMapView 缩放以显示框架中的所有注释

MKAnnotations 未显示在地图上 iOS 9 / Swift 2.0

Swift:如何在地图视图上启用和禁用注释?

iOS:Swift - 如何在触摸地图上添加精确定位并获取该位置的详细地址?

MapKit 自定义注释被添加到地图,但在地图上不可见

如何通过 Swift 使注解出现在 Apple 地图上?