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