Есть ли простой способ удалить все аннотации на карте без повторения всех отображаемых аннотаций в Objective-c?
источник
Есть ли простой способ удалить все аннотации на карте без повторения всех отображаемых аннотаций в Objective-c?
Да вот как
[mapView removeAnnotations:mapView.annotations]
Однако предыдущая строка кода удалит все аннотации карты «PINS» с карты, включая булавку местоположения пользователя «Blue Pin». Чтобы удалить все аннотации карты и оставить на карте булавку местоположения пользователя, есть два возможных способа сделать это.
Пример 1, сохраните аннотацию местоположения пользователя, удалите все булавки, снова добавьте булавку местоположения пользователя, но у этого подхода есть недостаток, это приведет к тому, что булавка местоположения пользователя будет мигать на карте из-за удаления булавки и ее добавления назад
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Пример 2, я лично предпочитаю избегать удаления булавки пользователя местоположения в первую очередь,
- (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;
}
Вот самый простой способ сделать это:
источник
Вот как удалить все аннотации, кроме местоположения пользователя, явно написанные, потому что я думаю, что снова буду искать этот ответ:
источник
Это очень похоже на ответ Sandip, за исключением того, что он не добавляет повторно местоположение пользователя, поэтому синяя точка не мигает снова и снова.
источник
Вам не нужно сохранять ссылку на местоположение пользователя. Все, что нужно, это:
И до тех пор, пока вы
mapView.showsUserLocation
установилиYES
, у вас все еще будет местоположение пользователя на карте. При настройке этого свойства вYES
основном запрашивает отображение карты, чтобы начать обновление и выборку местоположения пользователя, чтобы отобразить его на карте. ИзMKMapView.h
комментариев:источник
Быстрая версия:
источник
Swift 3
источник
Swift 2.0 Просто и лучше:
источник
Чтобы удалить один тип подкласса, вы можете сделать
где
PlacesAnnotation
подклассMKAnnotation
источник