无法从 CLGeocoder() 保存纵向和纬度



我想使用地址作为字符串来检索纵向和纬度。我在这里找到了这个非常有用的帖子: 将地址转换为坐标 swift

但是当我想将结果保存在双精度字段中并返回它时,我不能。我所做的是

func getLatitude(address:String) -> Double{
var lati = 0.0
var geocoder = CLGeocoder()
geocoder.geocodeAddressString("your address") {
placemarks, error in
let placemark = placemarks?.first
if let lat = placemark?.location?.coordinate.latitude{
lati = lat
}
}
}
return lati
}

在geocoder.geocodeAddressString块中填充了该值,但是当我尝试返回时,它总是给我0.0,我已经尝试了一切。有什么想法吗?

如果它尝试打印内部代码块中的值,则会打印出来,但我永远无法返回它。

提前感谢您的回答。

>CLLocationCoordinate2D是纬度和经度的结构,两者都定义为CLLocationDegrees,它本身是Double的类型别名。

var latitude: Double?
var longitude: Double?
func getLocation(address: String) {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(address) { placemarks, error in
guard let placemark = placemarks?.first else { return }
let coordinate = placemark.location?.coordinate
latitude = coordinate?.latitude
longitude = coordinate?.longitude
}
}

最新更新