我試圖寫一個簡單的方法,餵了CLLocationDegrees
並返回CLPlacemark
。看着Apple's documentation,這看起來很簡單。反向地理編碼在斯威夫特4
下面是我所傾倒入一個遊樂場:
import CoreLocation
// this is necessary for async code in a playground
import PlaygroundSupport
// this is necessary for async code in a playground
PlaygroundPage.current.needsIndefiniteExecution = true
func geocode(latitude: CLLocationDegrees, longitude: CLLocationDegrees) -> CLPlacemark? {
let location = CLLocation(latitude: latitude, longitude: longitude)
let geocoder = CLGeocoder()
var placemark: CLPlacemark?
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
if error != nil {
print("something went horribly wrong")
}
if let placemarks = placemarks {
placemark = placemarks.first
}
}
return placemark
}
let myPlacemark = geocode(latitude: 37.3318, longitude: 122.0312)
既然這樣,我的方法是返回nil。我不知道我的錯誤在哪裏,但我確信這是我的愚蠢行爲。謝謝你的閱讀。
geocoder.reverseGeocodeLocation是異步的,你需要一個完成處理程序 –
謝謝。我會看看我能否弄清楚。 – Adrian
我的帖子是錯誤的。檢查我的編輯。我複製粘貼你的代碼,並沒有注意到你通過兩個位置,而不是兩個雙打 –