1
我試圖用地理編碼器geocodeAddressString-function將多個批註添加到我的mapview。使用geocoder.geocodeAddressString添加多個批註(遞歸?)
問題是,它只是添加其中的一個,但是它告訴我,兩個都運行.. 這是我的代碼 - 順便說一句,我從來沒有真正使用遞歸之前,所以請糾正我,這一切都做錯了! :)
func geoCode(addresses: [String]) {
print("Addresser: \(addresses.count)")
guard let address = addresses.first else {
print("No more adresses :) - returning")
return
}
print("3333 address: \(address)")
dispatch_async(dispatch_get_main_queue()) {
self.geocoder.geocodeAddressString(address) { (placemarks, error) in
print("In geocoder!")
if error == nil {
if let placemark = (placemarks?[0])! as? CLPlacemark {
self.annotation.coordinate = CLLocationCoordinate2DMake((placemark.location?.coordinate.latitude)!, (placemark.location?.coordinate.longitude)!)
self.map.addAnnotation(self.annotation)
let remainingAddresses = Array(addresses[1..<addresses.count])
print("addresses left: \(remainingAddresses.count)")
self.geoCode(remainingAddresses)
}
}
}
}
}
這裏是我的控制檯輸出:
Addresser: 2
3333 address: Kastrupvej 2A 2300 København s
In geocoder!
addresses left: 1
Addresser: 1
3333 address: Holmbladsgade 20 2300 København S
In geocoder!
addresses left: 0
Addresser: 0
No more adresses :) - returning
但只有1註記在我的地圖,這是最後一個.. 誰能告訴我爲什麼,我在做什麼錯? :) 我試着用for-loop第一次,但似乎地理編碼器只能處理1件事 - 這就是爲什麼我嘗試了異步和遞歸方式。
祝您有美好的一天!