2016-11-09 1 views
3

Ich versuche, Anmerkungen zu meiner Karte hinzuzufügen. Ich habe eine Reihe von Punkten mit Koordinaten im Inneren. Ich versuche, Anmerkungen von diesen Koordinaten hinzuzufügen.Hinzufügen von Anmerkungen in MapKit - programmatisch

Ich habe diese definiert:

var points: [CLLocationCoordinate2D] = [CLLocationCoordinate2D]() 
let annotation = MKPointAnnotation() 

Punkte hat innen Koordinaten. Ich überprüfte. Und ich mache das:

Es hält nur die letzte Anmerkung hinzufügen ... Anstelle von allen von ihnen. Warum ist das? Gibt es übrigens eine Möglichkeit, eine bestimmte Annotation zum Beispiel nach Titel zu löschen?

Antwort

3

Jede Anmerkung muss eine neue Instanz sein, Sie verwenden nur eine Instanz und überschreiben ihre Koordinaten. So Ihr Code ändern:

for index in 0...points.count-1 { 
    let annotation = MKPointAnnotation() // <-- new instance here 
    annotation.coordinate = points[index] 
    annotation.title = "Point \(index+1)" 
    map.addAnnotation(annotation) 
} 
+0

Danke. Werde es in ein paar Stunden versuchen und melden. Ist es möglich, die Annotationen nach Titel zu löschen? –

+0

Es hat funktioniert. Danke –

+0

Um eine Annotation zu löschen, iterieren Sie einfach über das Array map.annotations, bis Sie die Annotation gefunden haben. Rufen Sie dann 'map.removeAnnotation (Annotation)' auf – zisoft

2

können Sie bearbeiten Ihre for-Schleife mit dem Code unten Ich denke, Ihr Array wie Punkte Array würde

let points = [ 
    ["title": "New York, NY", "latitude": 40.713054, "longitude": -74.007228], 
    ["title": "Los Angeles, CA", "latitude": 34.052238, "longitude": -118.243344], 
    ["title": "Chicago, IL",  "latitude": 41.883229, "longitude": -87.632398] 
] 
for point in points { 
    let annotation = MKPointAnnotation() 
    annotation.title = point["title"] as? String 
    annotation.coordinate = CLLocationCoordinate2D(latitude: point["latitude"] as! Double, longitude: point["longitude"] as! Double) 
    mapView.addAnnotation(annotation) 
} 

es für mich arbeiten. Alles Gute für euch.

Verwandte Themen