Отображение нескольких аннотаций в MKMapView
Возможно ли открыть одновременно более одного выноска?
Код:
- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView {
for (id<MKAnnotation> currentAnnotation in theMapView.annotations) {
[theMapView selectAnnotation:currentAnnotation animated:YES];
}
}
открывается только одна выноска.
Ответы
Ответ 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