¿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.