使用某个pinColor删除MKMapView注释?

时间:2011-02-19 06:31:26

标签: iphone ios annotations mkmapview

是否可以删除给定pinColor的给定MKMapView上的所有注释?我正在尝试清除我地图上所有用户输入的注释(图钉),然后再为我的应用程序的一部分显示新的注释,但我不知道我有多少可以有选择地删除注释......

我想删除所有带有MKPinAnnotationColorGreen(绿色)引脚的注释,但我也可以简单地删除用户输入的所有引脚,如果有办法我可以跟踪它们。

我知道我可以做到:

[myMapView removeAnnotations:myMapView.annotations];

...然后重新绘制我想要的所有注释,但这似乎浪费了资源。

有什么建议吗?

2 个答案:

答案 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)中,指向这些注释的指针,然后只删除它们?