swiftmapkitswift3mkpointannotation

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?


Solution

  • Each annotation needs to be a new instance, you are using only one instance and overriding its coordinates. So change your code:

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