Как отобразить несколько выносок из MKAnnotationView? - PullRequest
6 голосов
/ 22 июля 2011

Мне нравится реализовать что-н. как это. У меня есть две аннотации с выносками, но MKMapView позволяет одновременно выбирать только одну.

[mapView selectAnnotation:self.firstAnnotation animated:FALSE];
[mapView selectAnnotation:self.secondAnnotation animated:FALSE];

Когда я выбираю другую аннотацию, первая автоматически отменяется.

Но на картинке ниже она успешно реализована. Так как это можно сделать? http://oi52.tinypic.com/14t3t09.jpg

1 Ответ

5 голосов
/ 12 сентября 2011

Также см. «Отображение нескольких аннотаций в MKMapView»: Отображение нескольких аннотаций в MKMapView

Похоже, что фреймворк не поддерживает множественный выбор, поэтому вам придется реализовать пользовательские выноски для этого поведения. Ответ на связанный вопрос предлагает сделать вашу выноску частью представления аннотации, чтобы вы могли самостоятельно управлять выбором. Лично мне нравится реализовывать выноску как отдельную аннотацию - у меня есть пример проекта с настраиваемыми выносками здесь:

https://github.com/jacobjennings/JJMapCallout

который был моим решением:

MKAnnotationView - заблокировать пользовательский вид аннотации для закрепления обновлений местоположения

В этом проекте я пересылаю методы делегата MKMapView

- (void)mapView:(MKMapView *)aMapView didSelectAnnotationView:(MKAnnotationView *)aView
- (void)mapView:(MKMapView *)aMapView didDeselectAnnotationView:(MKAnnotationView *)aView

к соответствующей аннотации. Это позволяет мне реализовать ожидаемое поведение выноски. Однако вы можете игнорировать сообщения didDeselectAnnotationView, чтобы оставить выноски видимыми.

Чтобы узнать, нажимает ли пользователь на карте, чтобы очистить аннотации (не нажал на булавку), проверьте значение mapView.selectedAnnotations в вашем методе didDeselectAnnotationView, и если он пуст, вы будете знать, чтобы очистить выноски.

...