¿Hay algún método directo o sugerencia sobre cómo obtener todas las anotaciones de MKMapView?¿Podemos obtener todas las vistas de anotación de MKMapView
Thnak que, Madan Mohan
¿Hay algún método directo o sugerencia sobre cómo obtener todas las anotaciones de MKMapView?¿Podemos obtener todas las vistas de anotación de MKMapView
Thnak que, Madan Mohan
Se puede acceder a las anotaciones del mapa usando su propiedad annotations
. Obtener vistas para todas las anotaciones puede no ser siempre posible, ya que las anotaciones que actualmente no están visibles en el mapa pueden no tener vistas asociadas a ellas, pero para la anotación arbitraria puede intentar obtener una vista utilizando el método -viewForAnnotation:
.
Así que aquí cómo se puede iterar a través de anotaciones todo de mapa y tratar de acceder a sus puntos de vista:
for (id<MKAnnotation> annotation in mapView.annotations){
MKAnnotationView* anView = [mapView viewForAnnotation: annotation];
if (anView){
// Process annotation view
...
}
}
en Swift 3.
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
let selectedAnnotation = view.annotation
for annotation in mapView.annotations {
let viewI = mapView.view(for: annotation)
if !(viewI?.annotation is MKUserLocation){
if annotation.isEqual(selectedAnnotation) {
viewI?.image = UIImage(named: "focus.png")
showLifeEventView(anotation: view) //did select a point on Map.
}else{
viewI?.image = UIImage(named: "point.png")
}
}
}
}
Eso fue increíble hermano. . me salvó el tiempo. . –
Esto creará un nuevo conjunto de MKAnnotationViews - no devolver el los existentes en su mapa. –
^No, no creará una nueva anotación. La solución original es correcta. – n13
Aneil, sospecho que estás confundiendo el método 'MKMapView'' viewForAnnotation' (que funciona correctamente en el ejemplo de Vladimir) con el método 'MKMapViewDelegate'' mapView: viewForAnnotation: '(que crea anotaciones, pero nunca llamas directamente). – Rob