gpt4 book ai didi

ios - MKMapView 遮挡会剔除它的注释吗?

转载 作者:行者123 更新时间:2023-11-29 01:25:43 24 4
gpt4 key购买 nike

我试图在 MKMapView 上向用户显示数千个潜在的图钉(注释)。有谁知道 map 是否使用遮挡剔除来仅渲染可见注释?

这适用于使用 xCode 6.4 的 iOS 7+

最佳答案

在谈论管理大量注释时,我们应该区分“注释”和“注释 View ”。当您向 map View 添加许多注释时,这些轻量级 MKAnnotation 对象的集合保留在 annotations 数组中。但是 map View 提供了一种机制来缓解可能由大量关联的“注释 View ”引起的内存问题。

当您向 map View 添加数千个注释时,实例化的唯一注释 View 是那些可见的(以及靠近 map 可见部分的那些。如果您正确使用 dequeueReusableAnnotationViewWithIdentifierviewForAnnotation 中,当您滚动并且注释 View 从 View 中消失时,当它需要新的注释 View 时,它将回收那些已经滚动到 View 之外的 View :

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationIdentifier)
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
} else {
annotationView?.annotation = annotation
}
return annotationView
}

因此,这将注释 View 的数量保持在一些可管理的数量,在绝对需要它们之前不一定要实例化新的注释 View (即不会碰巧有任何旧的注释 View 已经滚出 View ,可用以供重复使用)。

但是,如果用户在 map 上缩小,导致同时可见的注释 View 数量无法控制,则您必须自己处理这种情况。回到 WWDC 2011,有一个视频 Visualizing Information Geographically with MapKit在处理大量注释时展示了有趣的模型。具体来说,它们处理的是缩小时的问题,注释 View 太多以至于它们开始重叠并变得太多。该视频演示了一种方法,在这种方法中,您可以在滚动时将注释 View 聚合在一起(如有必要)。该实现相当初级,但它说明了这个概念。

关于ios - MKMapView 遮挡会剔除它的注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com