Как отобразить несколько выносок из MKAnnotationView?

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

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

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

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


person baladurasa    schedule 22.07.2011    source источник


Ответы (1)


Также см. «Отображение нескольких выносок аннотаций в 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, и если оно пусто, вы будете знать, что нужно очистить выноски.

person Jacob Jennings    schedule 12.09.2011
comment
прочитайте другое решение, на которое вы ссылались, и заметили, что вы изменили там ссылку мегазагрузки, вы также должны изменить эту ссылку! Хорошо сделано... - person whyoz; 11.08.2012