首页 > 解决方案 > 执行 geocodeAddressString 两次(计算两个 CLLocations 之间的距离) - Swift 4

问题描述

我正在尝试计算两个地址之间的距离。这应该不是问题,但是我在将地址转换为 CLLocations 时遇到了问题。第一次调用 geocodeAddressString 时,一切正常,但实际上它没有被第二次调用。我设置了一个断点,什么也没发生。你有什么主意吗?谢谢。

lazy var geocoder = CLGeocoder()
var plz1 = "45345"
var plz2 = "22927"

weak var Ort1: CLLocation?
weak var Ort2: CLLocation?

    func calcDistance(){
        let address1 = "\("Germany"), \(plz1)"
        let address2 = "\("Germany"), \(plz2)"

        getLocation(address: address1)
        getLocation(address: address2)

        //print(Ort1?.distance(from: Ort2!))
    }

    func getLocation(address: String) {
        geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
            if((error) != nil){
                print("Error", error ?? "")
            }
            if (placemarks?.first) != nil {
                var location: CLLocation?
                location = placemarks?.first?.location
                self.Ort1 = location
                let coordinate = location?.coordinate
                print(coordinate!.latitude)
                print(coordinate!.longitude)
                self.geocoder.cancelGeocode()
            }
        })
    }

标签: swiftswift4core-locationcllocation

解决方案


推荐阅读