我有一个数据结构,其中包含:
NSNumber
显示POI(兴趣点)的重要性CLLocation
。假设我能够按重要性排序POI,并且每个POI都有一个唯一的重要性因素,那么获得包含我MKMapView
中显示区域内POI的子阵列的最佳方法是什么?
简单地检查每个POI似乎效率低下,因为我可能有几千个POI,并且我想在每次缩放级别改变时重复此过程(因此在任何显示的区域我只显示#个最重要的区域)。 / p>
答案 0 :(得分:0)
我想你要找的是:
- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect
此方法提供了一种快速检索地图特定部分中的注释对象的方法。这种方法比自己在注释属性中对对象进行线性搜索要快得多。
请注意,它只是在iOS 4.2及更高版本中可用,我担心在以前的iOS版本中没有其他解决方案而不是自定义代码。
编辑关于您的评论:我的猜测是,对于几千个注释,上面的方法应执行操作,MKAnnotation
是一个轻量级协议,通过在坐标上过滤来扫描数组应该没问题。但要注意不要添加数千个MKAnnotationView
,这可以在iPhone 4上运行,已经做到了,但你几乎无法滚动地图:)
然后我会建议:
关于内存,嘿,这些设备很容易为您的应用程序提供至少64MB的可用内存,如果没有,将会杀死一些进程,不要被几K注释吓到!只需要处理内存泄漏,特别是在这些密集的过程中。