C'è qualche metodo diretto o qualche suggerimento su come ottenere tutte le annotazioni da MKMapView?Possiamo ottenere tutte le viste di annotazione da MKMapView
Thnak voi, Madan Mohan
C'è qualche metodo diretto o qualche suggerimento su come ottenere tutte le annotazioni da MKMapView?Possiamo ottenere tutte le viste di annotazione da MKMapView
Thnak voi, Madan Mohan
È possibile accedere annotazioni della mappa utilizzando la sua proprietà annotations
. Ottenere le viste per tutte le annotazioni potrebbe non essere sempre possibile poiché le annotazioni che non sono attualmente visibili sulla mappa potrebbero non avere nessuna vista associata con esse, ma per le annotazioni arbitrarie puoi provare a ottenere una vista usando il metodo -viewForAnnotation:
.
Quindi, ecco come è possibile scorrere le annotazioni tutto della mappa e tentare di accedere ai loro punti di vista:
for (id<MKAnnotation> annotation in mapView.annotations){
MKAnnotationView* anView = [mapView viewForAnnotation: annotation];
if (anView){
// Process annotation view
...
}
}
a 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")
}
}
}
}
Questo è stato stupendo fratello. . mi ha salvato il tempo. . –
Questo creerà una nuova serie di MKAnnotationViews - non restituire il quelli esistenti sulla tua mappa. –
^No, non creerà una nuova annotazione. La soluzione originale è corretta. – n13
Aneil, sospetto che tu stia confondendo il metodo 'MKMapView'' viewForAnnotation' (che funziona correttamente nell'esempio di Vladimir) con il metodo 'MKMapViewDelegate'' mapView: viewForAnnotation: '(che crea annotazioni, ma non chiamate mai direttamente). – Rob