How do I remove all annotations from MKMapView except the user location annotation? How do I remove all annotations from MKMapView except the user location annotation? ios ios

How do I remove all annotations from MKMapView except the user location annotation?


Update:

When I tried with the iOS 9 SDK the user annotation is no longer removed. You can simply use

mapView.removeAnnotations(mapView.annotations)

Historical answer (for apps that run on iOS before iOS 9):

Try this:

NSMutableArray * annotationsToRemove = [ mapView.annotations mutableCopy ] ;[ annotationsToRemove removeObject:mapView.userLocation ] ;[ mapView removeAnnotations:annotationsToRemove ] ;

EDIT: Swift version

let annotationsToRemove = mapView.annotations.filter { $0 !== mapView.userLocation }mapView.removeAnnotations( annotationsToRemove )


To clear all the annotations from the map:

[self.mapView removeAnnotations:[self.mapView annotations]];

To remove specified annotations from Mapview

 for (id <MKAnnotation> annotation in self.mapView.annotations){    if (![annotation isKindOfClass:[MKUserLocation class]])    {              [self.mapView removeAnnotation:annotation];       }}

Hope this may help you.


For Swift you can simply use a one-liner:

mapView.removeAnnotations(mapView.annotations)

Edit: As nielsbot mentioned it will also remove the user's location annotation unless you have set it up like this:

mapView.showsUserLocation = true