2010-03-10 4 views
12

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

Код:

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

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

+0

Почему более 1? Размер экрана невелик, и это смущает пользователя. – kennytm

+2

Правильно, но если на карте имеется только два-три контакта, достаточно большого расстояния между ними - пользователь не будет путать. И, да, это требование моего клиента. – Ievgen

ответ

7

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

-(void)setSelected:(BOOL)selected animated:(BOOL)animated селектор на 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

+0

Благодарим вас за ответ. Да, ты прав, это может сработать. – Ievgen

+0

Удалось ли вам это сделать? –

9

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

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

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

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

@property(nonatomic, copy) NSArray *selectedAnnotations 

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

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

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

+0

К сожалению, правда, начиная с 2013 года и iOS 6.1, все равно, как вы описываете. – Klaas

 Смежные вопросы

  • Нет связанных вопросов^_^