使用某个pinColor删除MKMapView注释?

gee*_*guy 5 iphone annotations mkmapview ios

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

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

我知道我可以做到:

[myMapView removeAnnotations:myMapView.annotations];
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

Mat*_*ham 10

我现在无法测试,但你尝试过:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pinColor == %d",  MKPinAnnotationColorGreen];
[myMapView removeAnnotations:[myMapView.annotations filteredArrayUsingPredicate:predicate]];
Run Code Online (Sandbox Code Playgroud)

至于用户添加的内容,您可能需要自己跟踪这些内容.您还可以创建自己的MKPinAnnotation子类.在该子类上,添加属性

@property (nonatomic, BOOL) addedByUser;
Run Code Online (Sandbox Code Playgroud)

.如果用户添加了者,则可以将addedByUser设置为true,然后使用上述类似方法过滤掉那些(例如@"addedByUser == YES").