谷歌地图:反向地理代码回叫不会到来

时间:2017-12-10 17:46:22

标签: ios swift google-maps apple-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)

    }
    }

}
}

有时这个方法不会给我回调。我不明白为什么,添加此方法的另一件事可以被多个线程同时调用,所以我使用lockqueue来确保我不会遇到同步问题。

1 个答案:

答案 0 :(得分:0)

最后,经过几天的调试,我解决了这个问题。

我使用as.geoCoder将GEOCoder作为实例变量,现在我改为以下

  "scripts": {
"start": "webpack-dev-server --hot --open",
"lint": "eslint src"  },

我改为局部变量并为每个地理反复调用创建。