在MKMapView中搜索特定的MKAnnotation类

时间:2012-01-07 06:01:15

标签: iphone ios filter mkmapview mkannotation

我在mapView中有4-5种不同的注释类。  使用以下代码,我希望只有AnnotationType1应该响应for循环。

for (AnnotationType1* annotation in mymap.annotations) 
        {
NSLog(@"annotation class is %@", [annotation class]);
}

但是从控制台可以看出我也得到了其他课程。

annotation class is AnnotationType1
annotation class is AnnotationType2
annotation class is AnnotationType3
annotation class is AnnotationType4

仅对AnnotationType1注释执行操作的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

首先,正如您所发现的那样,快速迭代不会像您想象的那样工作。 mymap.annotations返回相同的注释对象数组,无论如何 - 它不知道你将它们分配给哪种指针。

其次,通常认为依靠视图(例如MKMapView)来存储数据(比如注释)是一个坏主意。地图视图可以了解注释 - 它必须知道它们才能正常工作。但我不建议指望地图视图来维持应用程序的状态。您可能将注释对象存储在数据模型的某个位置 - 如果是这样,那么这将是获取注释列表的更好位置。

第三,您可以使用谓词过滤数组。 See this answer使用谓词按类名进行过滤的帮助。