Как сделать функцию, которая возвращает координаты с адреса swift 4 - PullRequest
0 голосов
/ 15 апреля 2020

Привет, я хочу получить координаты адреса. Я сделал эту функцию, но не работает. Возврат всегда 0.0, 0.0

 func getCoordinates(address: String)->(Double, Double){
    DispatchQueue.main.async {
        let geoCoder = CLGeocoder()

        geoCoder.geocodeAddressString(address) { (placemarks, error) in
            guard let placemarks = placemarks, let location = placemarks.first?.location else {  return }
            latitude = location.coordinate.latitude
            longitude = location.coordinate.longitude

        }
    }
    return (latitude ?? 0.0, longitude ?? 0.0)

}

1 Ответ

0 голосов
/ 15 апреля 2020

Вам нужно завершить и вставить основной блок очереди в обратный вызов геокодера

func getCoordinates(_ address: String,completion:@escaping((CLLocationCoordinate2D) -> ())){
    let geoCoder = CLGeocoder()
    geoCoder.geocodeAddressString(address) { (placemarks, error) in
        guard let placemarks = placemarks, let location = placemarks.first?.location else {  return }
        DispatchQueue.main.async {
            completion(location.coordinate)
        }
    }
}

call

getCoordinates("someAdd") {  loc in

}
...