Как открыть взывать MKAnnotationView программно? (IPhone, MapKit)

голоса
26

Я хочу , чтобы открыть выноски для MKPinAnnotationViewпрограммно. Например , я бросаю 10 контактов на карте, и вы хотите , чтобы открыть один ближе ко мне. Как бы я идти об этом?

Apple , указал параметр «выбранный» для MKAnnotationView's, но не поощряет установки его непосредственно (это не работает, пробовал).

В остальном MKAnnotationViewтолько имеет setHighlighted ( та же история ) и может ShowCalloutметод ..

Любые намеки, если это вообще возможно?

Задан 03/02/2010 в 18:16
источник пользователем
На других языках...                            


2 ответов

голоса
77

В вашем mapViewController создать метод действий:

- (void)openAnnotation:(id)annotation 
{
    //mv is the mapView
    [mv selectAnnotation:annotation animated:YES];

}

Вы можете определить ближайшую аннотацию на основе текущего местоположения и пешеходных аннотации, доступные в массиве.

[mv annotations];

После того, как ближайший аннотацию рассчитывается по телефону:

[self openAnnotation:closestAnnotation];

MAPview должен прокручиваться автоматически размещать аннотацию в центре области отображения.

Ответил 26/02/2010 в 05:45
источник пользователем

голоса
1

В стриже 3 это обновлена:

func openAnnotation(annotation: MkAnnotation) {
_ = [mapView .selectAnnotation(annotation, animated: true)]
}

и может быть вызвано с использованием любой аннотации (откроется вид выноски аннотаций и пытаться центрировать аннотацию на карте)

Например, используя вторую аннотацию в гипотетическом списке аннотаций.

openAnnotation(annotation: mapView.annotations[1])
Ответил 23/05/2017 в 16:14
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more