iphone ios mapkit mkannotation callouts

¿Cómo abrir llamar a MKAnnotationView programáticamente?(iPhone, MapKit)



ios callouts (2)

Quiero abrir la llamada para un MKPinAnnotationView programáticamente. Por ejemplo, coloco 10 pins en el mapa y quiero abrir el más cercano a mí. ¿Cómo voy a hacer esto?

Apple ha especificado el parámetro ''seleccionado'' para MKAnnotationView''s , pero no MKAnnotationView''s configurarlo directamente (esto no funciona, lo probé).

Por lo demás, MKAnnotationView solo tiene un conjunto resaltado (la misma historia ) y puede ShowCallout método ShowCallout .

¿Alguna pista si esto es posible?


En Swift 3 esto se actualiza a:

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

y se puede llamar usando cualquier anotación (esto abrirá la vista de llamada de anotación e intentará centrar la anotación en el mapa)

Por ejemplo, usando la segunda anotación en una lista hipotética de anotaciones.

openAnnotation(annotation: mapView.annotations[1])


En tu mapViewController crea un método de acción:

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

Luego, puede determinar la anotación más cercana según la ubicación actual y recorrer las anotaciones disponibles en la matriz.

[mv annotations];

Una vez calculada la anotación más cercana, llame al:

[self openAnnotation:closestAnnotation];

MapView debería desplazarse automáticamente para colocar su anotación en el centro del área de visualización.