Как удалить все аннотации из MKMapView, не удаляя синюю точку?

Я хотел бы удалить все аннотации из своего mapview без синей точки моего положения. Когда я звоню:

[mapView removeAnnotations:mapView.annotations];

все аннотации удалены.

В который путь я могу проверить (как для цикла на всех аннотациях), если аннотация не является синей точечной аннотацией?

РЕДАКТИРОВАНИЕ (я решил с этим):

for (int i =0; i < [mapView.annotations count]; i++) { 
    if ([[mapView.annotations objectAtIndex:i] isKindOfClass:[MyAnnotationClass class]]) {                      
         [mapView removeAnnotation:[mapView.annotations objectAtIndex:i]]; 
       } 
    }
26
задан Mat 14 May 2013 в 14:31
поделиться

2 ответа

, глядя на документацию MKMAPVIEW , похоже, что у вас есть аннотации, чтобы играть с. Следует довольно просто перейти через это и посмотреть, какие аннотации у вас есть:

for (id annotation in myMap.annotations) {
    NSLog(@"%@", annotation);
}

У вас также есть свойство userLocation , которое дает вам аннотацию, представляющее местоположение пользователя. Если вы проходите по аннотациям и помните все из них, которые не являются местоположением пользователя, вы можете затем удалить их с помощью метода : Метод:

NSInteger toRemoveCount = myMap.annotations.count;
NSMutableArray *toRemove = [NSMutableArray arrayWithCapacity:toRemoveCount];
for (id annotation in myMap.annotations)
    if (annotation != myMap.userLocation)
        [toRemove addObject:annotation];
[myMap removeAnnotations:toRemove];

Надеюсь, это поможет,

SAM

58
ответ дан 28 November 2019 в 06:02
поделиться

Если вам нравится быстро и просто, есть способ отфильтровать массив аннотации MKUserLocation. Вы можете передать это в функцию removeAnnotations: MKMapView.

 [_mapView.annotations filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"!(self isKindOfClass: %@)", [MKUserLocation class]]];

Я предполагаю, что это почти то же самое, что и описанные выше ручные фильтры, за исключением использования предиката для выполнения грязной работы.

31
ответ дан 28 November 2019 в 06:02
поделиться
Другие вопросы по тегам:

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