Cum de a deschide chema MKAnnotationView programatică? (IPhone, MapKit)

voturi
26

Vreau să deschidă un înștiințări MKPinAnnotationViewprogramatic. De exemplu , am picătură 10 pini de pe hartă, și doresc să deschidă cea mai apropiată de mine. Cum aș merge despre a face acest lucru?

Apple a specificat parametrul „selectat“ pentru MKAnnotationView's, dar descurajează în mod direct aceasta setare (acest lucru nu funcționează, a încercat).

Pentru restul MKAnnotationVieware doar un setHighlighted ( aceeași poveste ), și poate ShowCalloutmetoda ..

Orice sugestii în cazul în care acest lucru este posibil, la toate?

Întrebat 03/02/2010 la 18:16
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
77

În mapViewController dvs. a crea o metodă de acțiune:

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

}

Apoi puteți stabili cel mai apropiat adnotarea în funcție de locația curentă și mersul pe jos adnotările disponibile în matrice.

[mv annotations];

După ce cea mai apropiată adnotarea este calculată, apelați:

[self openAnnotation:closestAnnotation];

MapView ar derula automat pentru a plasa adnotări în centrul zonei de afișare.

Publicat 26/02/2010 la 05:45
sursa de către utilizator

voturi
1

În rapidă 3 este actualizată la:

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

și pot fi apelate folosind orice adnotare (acest lucru se va deschide vizualizarea înștiințărilor adnotare și încercarea de a centra adnotarea de pe hartă)

De exemplu, folosind a doua adnotarea într-o listă ipotetică de adnotări.

openAnnotation(annotation: mapView.annotations[1])
Publicat 23/05/2017 la 16:14
sursa de către utilizator

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