前向地理编码完成处理程序未在iOS swift4中执行
我正在尝试将地址转换为latlongs以将它们放在googleMap上,但当我将地址字符串传递给前向地理编码完成处理程序未在iOS swift4中执行,ios,google-maps,swift4,geocoding,cllocation,Ios,Google Maps,Swift4,Geocoding,Cllocation,我正在尝试将地址转换为latlongs以将它们放在googleMap上,但当我将地址字符串传递给geoCoder.geoAddressString(fullAddress)并运行应用程序时,completionHandler没有执行,我尝试在geoCoder.geocodeAddressString(fullAddress){(placemarks,error)处使用断点当我单击Steppover时,如果completionHandler 现在,我不知道为什么会这样…有人知道吗?请帮忙 在这里查
geoCoder.geoAddressString(fullAddress)
并运行应用程序时,completionHandler没有执行,我尝试在geoCoder.geocodeAddressString(fullAddress){(placemarks,error)处使用断点
当我单击Steppover时,如果completionHandler
现在,我不知道为什么会这样…有人知道吗?请帮忙
在这里查看我的代码:
func loadMarkers() {
for i in 0..<self.professioanlDetailsAH.count {
let fullAddress = "\(self.professioanlDetailsAH[i]["searchAddress"]!)"
if !fullAddress.isEmpty {
var geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(fullAddress) { (placemarks, error) in
guard
let placemarks = placemarks,
let addressLocation = placemarks.first?.location
else {
// handle no location found
return
}
let latitude = addressLocation.coordinate.latitude
let longitude = addressLocation.coordinate.longitude
}
}
}
}
func loadMarkers(){
对于0中的i。请将断点放在完成处理程序中。geoCodeAddressString
是异步调用,它将立即返回。另外,请检查错误并打印它,如果它不是零。@Badhan Ganesh感谢您的回复,请查看我的编辑,它将在循环完成后调用geoCoder,因此我将获得l在循环中传递的最后一个地址的末尾。但是,我想传递循环中的所有地址。如何做???在映射中的何处添加标记???for循环中的geocodeAddressString
将在每次迭代中返回,但可能需要一些时间。
func loadMarkers() {
for i in 0..<self.professioanlDetailsAH.count {
print(self.professioanlDetailsAH[i]["firstName"]!)
let fullAddress = "\(self.professioanlDetailsAH[i]["searchAddress"]!)"
print(fullAddress)
if !fullAddress.isEmpty {
geoCoder.geocodeAddressString(fullAddress) {(placemarks, error) in
if error != nil {
print(error!)
}
else{
guard
let placemarks = placemarks,
let addressLocation = placemarks.first?.location
else {return}
let latitude = addressLocation.coordinate.latitude
let longitude = addressLocation.coordinate.longitude
print("lat:\(latitude), long:\(longitude)")
}
}
}
}