Как остановить метод viewForAnnotation от переопределения голубого маяка местоположения пользователя по умолчанию в iOS - программирование
Подтвердить что ты не робот

Как остановить метод viewForAnnotation от переопределения голубого маяка местоположения пользователя по умолчанию в iOS

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

Сейчас у меня есть что-то вроде:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if (annotation.coordinate == locationManager.location.coordinate) {

return nil;

    }else {

    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Beacon"];

    // Button
    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    button.frame = CGRectMake(0, 0, 23, 23);
    annotationView.rightCalloutAccessoryView = button;


    annotationView.canShowCallout = YES;

    return annotationView;
}
}

Но я не могу приравнять два, потому что я не могу получить свойство координат из аргумента аннотации.

Кто-нибудь знает какие-либо решения?

4b9b3361

Ответ 1

Посмотрите здесь документацию:

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html

Как сказано:

Если объект в параметре аннотации является экземпляром MKUserLocation, вы можете предоставить пользовательский вид для обозначения пользователей. Чтобы отобразить местоположение пользователя, используя значение по умолчанию системный вид, обратный нуль.

Итак, вы можете добавить условие для проверки:

if([annotation isKindOfClass: [MKUserLocation class]]) {
  return nil;
}