Как удалить все Аннотации на MKMapView

Существует ли простой способ удалить все аннотации на карту, не выполняя итерации через все отображенные аннотации в Цели-c?

98
задан kevin Mendoza 12 June 2010 в 03:44
поделиться

2 ответа

Да, вот как

[mapView removeAnnotations:mapView.annotations]

Однако предыдущая строка кода удалит все аннотации карты "PINS" из карту, включая булавку местоположения пользователя «Синяя булавка». Чтобы удалить всю карту аннотации и удерживайте булавку местоположения пользователя на карте, есть два возможные способы сделать это

Пример 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;
}
243
ответ дан 24 November 2019 в 05:07
поделиться

Вот как удалить все аннотации, кроме местоположения пользователя, написанные явно, потому что я думаю, что снова буду искать этот ответ:

NSMutableArray *locs = [[NSMutableArray alloc] init];
for (id <MKAnnotation> annot in [mapView annotations])
{
    if ( [annot isKindOfClass:[ MKUserLocation class]] ) {
    }
    else {
        [locs addObject:annot];
    }
}
[mapView removeAnnotations:locs];
[locs release];
locs = nil;
17
ответ дан 24 November 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: