0

我有一个数据结构,其中包含:

  • 显示NSNumberPOI(兴趣点)的重要性
  • aCLLocation包含 POI 的坐标。

假设我能够按重要性对 POI 进行排序,并且每个 POI 都有一个独特的重要性因子,那么获取包含在我的显示区域内的 POI 的子数组的最佳方法是什么MKMapView

简单地检查每个 POI 似乎效率低下,因为我可能有几千个 POI,并且我想在每次缩放级别更改时重复此过程(因此在任何显示的区域我只显示 # 最重要的那些)。

4

1 回答 1

0

我猜你正在寻找的是:

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect

引用苹果文档

此方法提供了一种快速检索地图特定部分中的注释对象的方法。这种方法比你自己对 annotations 属性中的对象进行线性搜索要快得多。

请注意,它仅适用于 iOS 4.2 及更高版本,恐怕除了以前的 iOS 版本中的自定义代码之外没有其他解决方案。

编辑关于您的评论:我的猜测是,对于几千个注释,上述方法应该可以解决问题,MKAnnotation是一个轻量级协议,通过坐标过滤来扫描数组应该没问题。但要注意不要添加数千个MKAnnotationView,它适用于 iPhone 4,已经做到了,但你几乎不能滚动地图 :)

那我建议:

  1. 使用该方法,快速编码,简单,然后在设备上进行一些性能测试
  2. 如果性能不够......或者你必须支持以前的 iOS 版本,没有魔法,写你自己的代码。(应该不难,有转换区域等的实用方法)

关于内存,嘿,这些设备至少有 64MB 的可用内存供您的应用使用,如果没有,它们会杀死一些进程,不要被几 K 的注释吓到!只需注意内存泄漏,尤其是在如此密集的过程中。

于 2011-04-17T09:22:14.767 回答