Gibt es eine einfache Möglichkeit, alle Anmerkungen auf einer Karte zu löschen, ohne alle in Objective-c angezeigten Anmerkungen zu durchlaufen?
quelle
Gibt es eine einfache Möglichkeit, alle Anmerkungen auf einer Karte zu löschen, ohne alle in Objective-c angezeigten Anmerkungen zu durchlaufen?
Ja, hier ist wie
[mapView removeAnnotations:mapView.annotations]
In der vorherigen Codezeile werden jedoch alle Kartenanmerkungen "PINS" aus der Karte entfernt, einschließlich des Benutzerstandort-Pins "Blue Pin". Es gibt zwei Möglichkeiten, um alle Kartenanmerkungen zu entfernen und den Benutzerstandort-Pin auf der Karte zu belassen
Beispiel 1: Behalten Sie die Benutzerstandortanmerkung bei, entfernen Sie alle Stifte, fügen Sie den Benutzerstandortstift wieder hinzu. Bei diesem Ansatz tritt jedoch ein Fehler auf. Der Benutzerstandortstift blinkt auf der Karte, da der Stift entfernt und dann hinzugefügt wird zurück
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Beispiel 2: Ich persönlich ziehe es vor, das Entfernen des Standortbenutzer-Pins zu vermeiden.
- (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;
}
Hier ist der einfachste Weg, dies zu tun:
quelle
So entfernen Sie alle Anmerkungen mit Ausnahme des Benutzerstandorts, die explizit geschrieben wurden, weil ich mir vorstelle, dass ich erneut nach dieser Antwort suchen werde:
quelle
Dies ist der Antwort von Sandip sehr ähnlich, außer dass der Benutzerstandort nicht erneut hinzugefügt wird, sodass der blaue Punkt nicht ein- und wieder blinkt.
quelle
Sie müssen keinen Verweis auf den Benutzerstandort speichern. Alles was benötigt wird ist:
Und solange Sie haben
mapView.showsUserLocation
zu setzenYES
, werden Sie noch Benutzer Standort auf der Karte haben. Wenn Sie diese Eigenschaft soYES
einstellen, dass die Kartenansicht grundsätzlich aufgefordert wird , den Benutzerstandort zu aktualisieren und abzurufen, um ihn auf der Karte anzuzeigen. Aus denMKMapView.h
Kommentaren:quelle
Schnelle Version:
quelle
Swift 3
quelle
Swift 2.0 Einfach und das Beste:
quelle
Um einen Typ von Unterklasse zu entfernen, können Sie dies tun
wo
PlacesAnnotation
ist eine Unterklasse vonMKAnnotation
quelle