¿Cómo abrir la llamada MKAnnotationView programáticamente? (iPhone, MapKit)
Quiero abrir la llamada para un MKPinAnnotationView
mediante programación. Por ejemplo, dejo caer 10 pines en el mapa, y quiero abrir el más cercano a mí. ¿Cómo podría hacer esto?
Apple ha especificado el parámetro 'selected' para MKAnnotationView's
, pero desaconseja configurarlo directamente (esto no funciona, lo probé).
Para el resto MKAnnotationView
solo tiene un setHighlighted ( la misma historia), y puede ShowCallout
método..
¿Alguna pista si esto es posible?
2 answers
En su MapViewController cree 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 en función de la ubicación actual y recorrer las anotaciones disponibles en la matriz.
[mv annotations];
Una vez calculada la anotación más cercana, llame a:
[self openAnnotation:closestAnnotation];
El MapView debe desplazarse automáticamente para colocar su anotación en el centro del área de visualización.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-13 05:37:59
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])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 16:14:04