您可以创建如下函数:
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