2012-06-02 9 views

Antwort

81

Update:

Als ich mit dem iOS 9 SDK versucht der Benutzer Anmerkung wird nicht mehr entfernt werden. Sie können einfach

mapView.removeAnnotations(mapView.annotations) 

Historische Antwort (für Anwendungen, die auf iOS vor iOS 9 laufen) verwenden:

starten:

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) 
+1

Danke! Genau das habe ich gebraucht! –

+0

Danke ..... Buddy – user968597

+0

Danke auch von mir :) –

3

Wenn Ihr Benutzer Lage eine Klasse von MKUserLocation ist, verwenden isKindOfClass Entfernen Benutzerposition Anmerkung zu vermeiden.

if (![annotation isKindOfClass:[MKUserLocation class]]) { 

} 

Else können Sie ein Flag setzen, um die Art Ihrer Anmerkungen in – mapView:viewForAnnotation: zu erkennen.

+0

Dank! Ich werde mich daran erinnern –

-1

Hallo, versuche das, ich habe die Lösung Ion aus diesem Code:

NSMutableArray*listRemoveAnnotations = [[NSMutableArray alloc] init]; 
[Mapview removeAnnotations:listRemoveAnnotations]; 

[listRemoveAnnotations release]; 
+0

das beantwortet die Frage nicht. Tatsächlich ist dieser Code als kein Effekt - 'listRemoveAnnotations' leer, wenn '-removeAnimations' aufgerufen wird. – nielsbot

19

alle Anmerkungen aus der Karte zu löschen:

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

angegebenen Anmerkungen von Mapview

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

} 

Hoffnung zu entfernen.

+1

Diese Antwort ist viel prägnanter als die angenommene. – shapeare

6

Für Swift Sie einfach einen Einzeiler verwenden können:

mapView.removeAnnotations(mapView.annotations) 

Edit: Wie nielsbot erwähnt er die Position des Benutzers Anmerkung entfernen wird auch, wenn Sie es so eingerichtet haben:

mapView.showsUserLocation = true 
+0

das entfernt alle Anmerkungen, was OP nicht wollte. – nielsbot

+0

Danke, ich habe gerade meine Antwort aktualisiert. – raspi

+0

Denke nicht, dass das auch funktioniert. Hast Du es versucht? – nielsbot

0

Wie wäre es mit einem NSPredicate Filter?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"className != %@", NSStringFromClass(MKUserLocation.class)]; 
NSArray *nonUserAnnotations = [self.mapView.annotations filteredArrayUsingPredicate:predicate]; 
[self.mapView removeAnnotations:nonUserAnnotations]; 

Das Leben ist immer besser, mit NSPredicate filtern

Verwandte Themen