是否可以删除给定pinColor的给定MKMapView上的所有注释?我正在尝试清除我地图上所有用户输入的注释(图钉),然后再为我的应用程序的一部分显示新的注释,但我不知道我有多少可以有选择地删除注释......
我想删除所有带有MKPinAnnotationColorGreen(绿色)引脚的注释,但我也可以简单地删除用户输入的所有引脚,如果有办法我可以跟踪它们。
我知道我可以做到:
[myMapView removeAnnotations:myMapView.annotations];
...然后重新绘制我想要的所有注释,但这似乎浪费了资源。
有什么建议吗?
答案 0 :(得分:10)
我现在无法测试,但你试过了吗?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pinColor == %d", MKPinAnnotationColorGreen];
[myMapView removeAnnotations:[myMapView.annotations filteredArrayUsingPredicate:predicate]];
对于用户添加的内容,您可能需要自己跟踪这些内容。您还可以创建自己的MKPinAnnotation子类。在该子类上,添加属性
@property (nonatomic, BOOL) addedByUser;
。您可以将addedByUser设置为true,如果它们是由用户添加的,然后使用上述类似的方法过滤掉那些(例如@“addedByUser == YES”)。
答案 1 :(得分:0)
也许将每组注释保存在一个数组(NSMutableArray)中,指向这些注释的指针,然后只删除它们?