在MapKit中添加注释 - 以编程方式

时间:2016-11-09 18:21:07

标签: swift mapkit swift3 mkpointannotation

我正在尝试为地图添加注释。 我有一个带坐标的点数组。 我正在尝试从这些坐标添加注释。

我定义了这个:

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

点内有坐标。我检查了。我这样做:

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

它不断添加最后一个注释......而不是全部注释。 为什么是这样? 顺便说一下,有没有办法按标题删除指定的注释?

2 个答案:

答案 0 :(得分:4)

每个注释都需要是一个新实例,您只使用一个实例并覆盖其坐标。所以改变你的代码:

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

答案 1 :(得分:4)

您可以使用以下代码编辑for循环 我认为你的数组就像点数组

  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)
}
它对我有用。一切都适合你。