Как открыть вызов MKAnnotationView программно? (iPhone, MapKit)
Я хочу открыть вызов для MKPinAnnotationView
программно. Например, я бросаю 10 контактов на карту и хочу открыть ближайший ко мне. Как мне это сделать?
Apple указала параметр "selected" для MKAnnotationView's
, но не рекомендует устанавливать его напрямую (это не работает, попробовал).
для остальных MKAnnotationView
имеет только setHighlighted (та же история), и ShowCallout
метод..
любые подсказки, если это возможно все?
2 ответов
в вашем mapViewController создайте метод действия:
- (void)openAnnotation:(id)annotation
{
//mv is the mapView
[mv selectAnnotation:annotation animated:YES];
}
затем вы можете определить ближайшую аннотацию на основе текущего местоположения и ходьбы аннотаций, доступных в массиве.
[mv annotations];
после вычисления ближайшей аннотации вызовите:
[self openAnnotation:closestAnnotation];
mapView должен прокручиваться автоматически, чтобы разместить аннотацию в центре области отображения.
в swift 3 это обновляется до:
func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}
и может быть вызван с помощью любой аннотации (это откроет вид выноски аннотации и попытается центрировать аннотацию на карте)
например, используя вторую аннотацию в гипотетическом списке аннотаций.
openAnnotation(annotation: mapView.annotations[1])