Czy istnieje prosty sposób na usunięcie wszystkich adnotacji na mapie bez iteracji przez wszystkie wyświetlane adnotacje w Objective-c?
źródło
Czy istnieje prosty sposób na usunięcie wszystkich adnotacji na mapie bez iteracji przez wszystkie wyświetlane adnotacje w Objective-c?
Tak, oto jak
[mapView removeAnnotations:mapView.annotations]
Jednak poprzedni wiersz kodu usunie z mapy wszystkie adnotacje mapy „PINS”, w tym pinezkę lokalizacji użytkownika „Blue Pin”. Aby usunąć wszystkie adnotacje mapy i zachować pinezkę lokalizacji użytkownika na mapie, można to zrobić na dwa sposoby
Przykład 1, zachowaj adnotację lokalizacji użytkownika, usuń wszystkie szpilki, dodaj pinezkę lokalizacji użytkownika z powrotem, ale jest wada w tym podejściu, spowoduje to, że pinezka lokalizacji użytkownika będzie migać na mapie, po usunięciu pinezki, a następnie dodaniu jej plecy
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Przykład 2, osobiście wolę przede wszystkim unikać usuwania kodu PIN użytkownika lokalizacji,
- (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;
}
Oto najprostszy sposób, aby to zrobić:
źródło
Oto jak usunąć wszystkie adnotacje z wyjątkiem lokalizacji użytkownika, napisane wyraźnie, ponieważ wyobrażam sobie, że ponownie będę szukał tej odpowiedzi:
źródło
Jest to bardzo podobne do odpowiedzi Sandipa, z tym wyjątkiem, że nie dodaje ponownie lokalizacji użytkownika, więc niebieska kropka nie miga ponownie.
źródło
Nie musisz zapisywać żadnych odniesień do lokalizacji użytkownika. Potrzebne jest tylko:
Dopóki to
mapView.showsUserLocation
ustawiszYES
, nadal będziesz mieć lokalizację użytkownika na mapie. Ustawienia tej właściwościYES
zasadniczo prosi widok mapy o rozpoczęcie aktualizacji i pobierania lokalizacji użytkownika, aby wyświetlić ją na mapie. ZMKMapView.h
komentarzy:źródło
Wersja Swift:
źródło
Szybki 3
źródło
Swift 2.0 Prosty i najlepszy:
źródło
Aby usunąć jeden typ podklasy, możesz to zrobić
gdzie
PlacesAnnotation
jest podklasaMKAnnotation
źródło