Подтвердить что ты не робот

Отображение нескольких аннотаций в MKMapView

Возможно ли открыть одновременно более одного выноска?

Код:

- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {
    for (id<MKAnnotation> currentAnnotation in theMapView.annotations) {
        [theMapView selectAnnotation:currentAnnotation animated:YES];
    }
}

открывается только одна выноска.

4b9b3361

Ответ 1

Обратите внимание, что существует метод MKMapView (not MKAnnotationView) для программного программирования, который работает более или менее, как и следовало ожидать:

- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated

Однако он автоматически отменяет любую аннотацию в настоящее время, поэтому это не решает вашу проблему.

Как ни странно, на MKMapView есть свойство, которое, как представляется, содержит массив выбранных аннотаций:

@property(nonatomic, copy) NSArray *selectedAnnotations

Но в документации по этому методу написано:

"Присвоение нового массива этому свойству выбирает первую аннотацию в массив."

Просто подумал, что это может быть интересно.

Ответ 2

От строгой перспективы API это не представляется возможным.

Выбран выбранный - (void) setSelected: (BOOL) анимированный: (BOOL) анимированный селектор на MKAnnotationView указывает: " Вы не должны вызывать этот метод напрямую Объект MKMapView вызывает этот метод в ответ на взаимодействие пользователя с аннотацией.", поэтому базовое сообщение заключается в том, что выбор экземпляров annotationView под полной ответственностью выбора пользователя и поскольку пользователь может выбрать только один из их одновременно, вы не сможете получить несколько из них одновременно.

Даже если в документации указано, что вы не должны вызывать этот метод напрямую, вы пытались вызвать его в любом случае с помощью setSelected: YES на нескольких экземплярах MKAnnotationView, чтобы увидеть, что он дает

ЧИСТЫЙ ПУТЬ Я ДЕЛАТЬ ЭТО: (не проверял себя, однако)

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

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

alt text http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg