Yes, here is how
[mapView removeAnnotations:mapView.annotations]
However the previous line of code will remove all map annotations "PINS" from
the map, including the user location pin "Blue Pin". To remove all map
annotations and keep the user location pin on the map, there are two
possible ways to do that
Example 1, retain the user location annotation, remove all pins, add
the user location pin back, but there is a flaw with this approach, it
will cause the user location pin to blink on the map, due to removing
the pin then adding it back
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Example 2, I personally prefer to avoid removing the location user pin
in the first place,
- (void)removeAllPinsButUserLocation2
{
id userLocation = [mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[mapView annotations]];
if ( userLocation != nil ) {
[pins removeObject:userLocation]; // avoid removing user location off the map
}
[mapView removeAnnotations:pins];
[pins release];
pins = nil;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…