通过地址快速访问坐标

嗨,我如何访问此块之外的经度和纬度参数?

 let geocoder = CLGeocoder()
        geocoder.geocodeAddressString(address) { placemarks,error in
           let placemark = placemarks?.first
           let lat = placemark?.location?.coordinate.latitude
           let lon = placemark?.location?.coordinate.longitude
           print("Lat: \(lat),Lon: \(lon)")
        }

我想将这两个参数另存为Firebase中的Float或String。谢谢

Yushujun 回答:通过地址快速访问坐标

您可以创建如下函数:

func getLatAndLong(address : String,competion : @escaping (CLLocationCoordinate2D?) -> ()) {
    let geocoder = CLGeocoder()
    geocoder.geocodeAddressString(address) { placemarks,error in
        let placemark = placemarks?.first
        let lat = placemark?.location?.coordinate.latitude
        let lon = placemark?.location?.coordinate.longitude
        print("Lat: \(lat),Lon: \(lon)")
        competion(placemark?.location?.coordinate)
    }
}

,然后将其称为:

var location : CLLocationCoordinate2D?
getLatAndLong(address: "pass your address here") { (coordinates) in
        self.location = coordinates
}

现在,您的location变量保存该值。

您可以使用它来获取纬度和经度

let latitide = location?.latitude
let longitude = location?.longitude

选项2

您可以在类中声明一个变量,并在获取坐标后更新其值。我建议在地理编码器异步运行时使用上述方法。最好使用完成处理程序来知道geoCoder何时完成执行任务并获得位置。

var latitude = 0.0 // 
var longitude = 0.0

let geocoder = CLGeocoder()
geocoder.geocodeAddressString("address") { placemarks,error in
    let placemark = placemarks?.first
    self.latitude = placemark?.location?.coordinate.latitude ?? 0.0
    self.longitude = placemark?.location?.coordinate.longitude ?? 0.0
}
本文链接:https://www.f2er.com/2684165.html

大家都在问