2016-11-09 48 views
3

我想向我的地圖添加註釋。 我有一個座標裏面的點的數組。 我想從這些座標添加註釋。在MapKit中添加註釋 - 以編程方式

我有這樣的定義:

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

它不斷添加最後一個註釋...而不是所有的人。 這是爲什麼? 順便說一下,有沒有一種方法來刪除指定的註釋,例如按標題?

回答

3

每個註解需要是一個新的實例,您只使用一個實例並覆蓋其座標。因此,更改代碼:

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

謝謝。將在幾個小時內嘗試並報告。是否可以按標題刪除註釋? –

+0

它工作。謝謝 –

+0

要刪除註釋,只需遍歷'map.annotations'數組,直到找到註釋爲止。然後調用'map.removeAnnotation(註解)' – zisoft

2

您可以編輯與下面的代碼 循環,我認爲你的陣列將像點陣列

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

它爲我工作。祝你一切安好。

相關問題