Удалить аннотации MKMapView с определенным pinColor? - PullRequest
5 голосов
/ 19 февраля 2011

Можно ли удалить все аннотации для данного MKMapView данного pinColor? Я пытаюсь очистить все введенные пользователем аннотации (булавки) на моей карте, прежде чем отображать новые для части моего приложения, но я не знал, насколько гранулярным я могу быть при выборочном удалении аннотаций ...

Я хотел бы просто удалить все аннотации, которые имеют MKPinAnnotationColorGreen (зеленые) выводы, но я также мог бы просто удалить все выводы, введенные пользователем, если бы я мог их отследить.

Я знаю, что могу просто сделать:

[myMapView removeAnnotations:myMapView.annotations];

... затем перерисовать все аннотации, которые я хочу, но это кажется пустой тратой ресурсов.

Любой совет?

Ответы [ 2 ]

10 голосов
/ 19 февраля 2011

Я не могу проверить это сейчас, но вы пробовали:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pinColor == %d",  MKPinAnnotationColorGreen];
[myMapView removeAnnotations:[myMapView.annotations filteredArrayUsingPredicate:predicate]];

Что касается добавленных пользователем, возможно, вам придется отслеживать их самостоятельно. Вы также можете создать свой собственный подкласс MKPinAnnotation. В этом подклассе добавьте свойство

@property (nonatomic, BOOL) addedByUser;

. Вы можете установить для параметра AddedByUser значение true, если они были добавлены пользователем, а затем отфильтровать их, используя аналогичный подход, описанный выше (например, @ "AddedByUser == YES").

0 голосов
/ 19 февраля 2011

Может быть, хранить каждую группу аннотаций в массиве (NSMutableArray) указателей на эти аннотации, а затем удалять только их?

...