Jak otworzyć zawołać MKAnnotationView programowo? (IPhone, MapKit)

głosy
26

Chcę otworzyć objaśnienie dla MKPinAnnotationViewprogramowo. Np wpadnę 10 szpilki na mapie i chcesz otworzyć jeden najbliżej mnie. Jak bym go o to robi?

Apple ma określony parametr „Wybrane” MKAnnotationView's, ale odradza ustawienie go bezpośrednio (to nie działa, próbowałem).

Dla reszty MKAnnotationViewma tylko setHighlighted ( sama historia ) i można ShowCalloutmetodę ..

Wszelkie wskazówki, czy to jest w ogóle możliwe?

Utwórz 03/02/2010 o 18:16
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
77

W swojej mapViewController utworzyć metody działania:

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

}

Następnie można określić najbliższy adnotacji na podstawie bieżącej lokalizacji i chodzenie adnotacji dostępne w tablicy.

[mv annotations];

Po najbliżej adnotacja jest obliczana, zadzwoń:

[self openAnnotation:closestAnnotation];

MapView powinna przewijać automatycznie umieścić adnotację w centrum obszaru wyświetlania.

Odpowiedział 26/02/2010 o 05:45
źródło użytkownik

głosy
1

W szybkich 3 to zaktualizowana:

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

i mogą być wywoływane za pomocą dowolnego adnotacji (ta otworzy adnotacji widoku objaśnienia i próbować centrum adnotacji na mapie)

Na przykład przy użyciu drugiego adnotacji w hipotetycznej liście adnotacji.

openAnnotation(annotation: mapView.annotations[1])
Odpowiedział 23/05/2017 o 16:14
źródło użytkownik

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