2011-01-17 12 views

risposta

54

È 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 
     ... 
    } 
} 
+0

Questo creerà una nuova serie di MKAnnotationViews - non restituire il quelli esistenti sulla tua mappa. –

+4

^No, non creerà una nuova annotazione. La soluzione originale è corretta. – n13

+5

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

3

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") 
       } 
      } 
     } 
} 
+1

Questo è stato stupendo fratello. . mi ha salvato il tempo. . –

Problemi correlati