如何制作一个从地址swift 4返回坐标的函数
Posted
技术标签:
【中文标题】如何制作一个从地址swift 4返回坐标的函数【英文标题】:How to make a function that return coordinates from address swift 4 【发布时间】:2020-04-15 13:23:51 【问题描述】:您好,我想接收地址的坐标。我做了这个功能但不起作用。总是返回 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)
【问题讨论】:
请对 Swift 中的同步/异步过程进行更多搜索。return
行总是在 DispatchQueue.main.async
块之前执行,这就是你总是失败的原因
【参考方案1】:
您需要完成并在地理编码器的回调中插入主队列块
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)
打电话
getCoordinates("someAdd") loc in
【讨论】:
非常感谢!以上是关于如何制作一个从地址swift 4返回坐标的函数的主要内容,如果未能解决你的问题,请参考以下文章