H.N. H.N. - 29 days ago 27
Swift Question

Add Annotations in MapKit - Programmatically

I am trying to add annotations to my map.
I have an array of points with coordinates inside.
I am trying to add annotations from those coordinates.

I have this defined:

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


points has coordinates inside. I checked. And I do this:

for index in 0...points.count-1 {
annotation.coordinate = points[index]
annotation.title = "Point \(index+1)"
map.addAnnotation(annotation)
}


It keeps adding only the last annotation... Instead of all of them.
Why is this?
By the way, is there a way to delete a specified annotation, by title for example?

Answer

You can edit your for loop with the below code I think your array would be like points array

  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)
}

it's working for me. All the best for you.