在 MapKit 中添加注释 - 以编程方式
Add Annotations in MapKit - Programmatically
我正在尝试向我的地图添加注释。
我有一个点数组,里面有坐标。
我正在尝试从这些坐标添加注释。
我有这个定义:
var points: [CLLocationCoordinate2D] = [CLLocationCoordinate2D]()
let annotation = MKPointAnnotation()
points里面有坐标。我检查了。我这样做:
for index in 0...points.count-1 {
annotation.coordinate = points[index]
annotation.title = "Point \(index+1)"
map.addAnnotation(annotation)
}
它一直只添加最后一个注释...而不是所有注释。
为什么是这样?
顺便问一下,有没有办法删除指定的注释,例如通过标题?
每个注释都需要是一个新实例,您只使用一个实例并覆盖其坐标。所以更改您的代码:
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)
}
您可以使用以下代码编辑您的 for 循环
我认为你的数组会像 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)
}
它对我有用。祝你一切顺利。
我正在尝试向我的地图添加注释。 我有一个点数组,里面有坐标。 我正在尝试从这些坐标添加注释。
我有这个定义:
var points: [CLLocationCoordinate2D] = [CLLocationCoordinate2D]()
let annotation = MKPointAnnotation()
points里面有坐标。我检查了。我这样做:
for index in 0...points.count-1 {
annotation.coordinate = points[index]
annotation.title = "Point \(index+1)"
map.addAnnotation(annotation)
}
它一直只添加最后一个注释...而不是所有注释。 为什么是这样? 顺便问一下,有没有办法删除指定的注释,例如通过标题?
每个注释都需要是一个新实例,您只使用一个实例并覆盖其坐标。所以更改您的代码:
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)
}
您可以使用以下代码编辑您的 for 循环 我认为你的数组会像 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)
}
它对我有用。祝你一切顺利。