0
모든 사진의 위치 정보 위치를 취소하려고합니다. 나는 다음과 같이 역 지오 코더 방법을 사용하고있다.Google지도 : 역 지오 코드 콜백이 수행되지 않습니다.
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를 사용하여 동기화 문제가 발생하지 않도록 여러 스레드에서 동시에 호출 할 수 있습니다.
완성 처리기가 호출되지 않는 것을 어떻게 결정합니까? 그 방법으로 생성 될 수있는 오류는 무시하고 있음을 알았습니다. –
내 중단 점이이 지점에 도달했기 때문에 완료 핸들러가 리턴하는지 확인합니다.이 메소드에 대한 오류를 처리하는 방법 .self.geocoder.reverseGeocodeCoordinate ((coordinate), completionHandler : {.}). – santhosh