0
すべての写真のジオコード位置を逆にしようとしています。私は以下のように逆ジオコーダー法を使用しています。Google maps:逆ジオコードコールバックが来ない
func fetchLocation(coordinate: CLLocationCoordinate2D, completion: @escaping (_ location: LocationData?) -> Void) {
let lockQueue = DispatchQueue(label:"com.LockQueue")
lockQueue.sync{
DispatchQueue.main.async {
self.geocoder.reverseGeocodeCoordinate((coordinate), completionHandler: {
reverseGeoCodeResponse, _ in
if let reverseGeoCodeResponse = reverseGeoCodeResponse, let reverseGeoCode = reverseGeoCodeResponse.firstResult() {
let locationData = LocationData()
locationData.locality = reverseGeoCode.locality
locationData.subLocality = reverseGeoCode.subLocality
locationData.administrativeArea = reverseGeoCode.administrativeArea
locationData.postalCode = reverseGeoCode.postalCode
locationData.country = reverseGeoCode.country
locationData.latitude = (coordinate.latitude)
locationData.longitude = (coordinate.longitude)
locationData.isDataFromGoogle = true
completion(locationData)
}
}
}
}
このメソッドはコールバックを返さないことがあります。なぜ私は理解できませんでした。このメソッドを追加するもう1つのことは、複数のスレッドが同じように呼び出すことができるので、lockqueueを使用して同期の問題に取り組まないようにしています。
どのように完了ハンドラが呼び出されていないと判断していますか?私はあなたがそのメソッドによって生成される可能性のあるエラーを無視していることを知っています。 –
私はブレークポイントがこの点に到達しているので、補完ハンドラが復帰していることを確認しています。このメソッドのエラーを処理する方法.self.geocoder.reverseGeocodeCoordinate((coordinate)、completionHandler:{。 – santhosh