Несколько выносок аннотации, отображающихся в MKMapView

Действительно ли возможно открыть одновременно больше затем одну выноску?

Код:

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

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

13
задан Ievgen 10 March 2010 в 15:10
поделиться

2 ответа

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

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

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

ЧИСТЫЙ СПОСОБ, КОТОРЫЙ Я БЫЛ СДЕЛАТЬ: (сам не тестировал)

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

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

alt text http://a1.phobos.apple.com/us/r1000/ 048 / Фиолетовый / 2b / b2 / ec / mzl.ttcsrlee.480x480-75.jpg

8
ответ дан 1 December 2019 в 23:47
поделиться

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

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

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

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

@property(nonatomic, copy) NSArray *selectedAnnotations

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

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

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

9
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

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