Отображение нескольких аннотаций в MKMapView - PullRequest
13 голосов
/ 10 марта 2010

Можно ли одновременно открыть более одной выноски?

код:

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

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

Ответы [ 2 ]

9 голосов
/ 24 июня 2010

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

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

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

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

@property(nonatomic, copy) NSArray *selectedAnnotations

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

"Назначение нового массива этому свойству выбирает первую аннотацию в только массив. "

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

8 голосов
/ 10 марта 2010

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

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

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

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

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

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

альтернативный текст http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg

...