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?
Start by making your view controller the delegate of your map view, so that we can receive events. You should also make your view controller conform to MKMapViewDelegate in code. Second, you need to implement a viewFor method that converts your annotation into a view that can be displayed on the map.
A user-friendly description of a location on the map.
To remove a single annotation from an annotation manager, remove it from the annotations array. To completely remove an annotation manager, call mapView. annotations.
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)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With