问题描述
所以我用 MapKit 做了一个超级简单的正向地理编码函数:
func getCoordinates(from address: String) {
CLGeocoder().geocodeAddressstring(address) { placemark,error in
guard error == nil && placemark != nil else {
return
}
for index in 0..<placemark!.count {
let number = index + 1
print("Location \(number): \(placemark?[index].location?.coordinate)")
}
}
}
现在有两件事:第一件事是(只是为了澄清),mapkit 地理编码函数只返回输入字符串的最高命中,它不返回结果数组——有没有办法改变它?我注意到的第二件事是此功能不适用于“兴趣点”位置——例如,如果您输入“McDonalds”作为字符串,则不会返回任何结果,因为它在技术上不是地址。有人有什么建议吗?
解决方法
尝试改用 MKLocalSearch
:
let request = MKLocalSearch.Request()
request.region = region
request.naturalLanguageQuery = "McDonalds"
let search = MKLocalSearch(request: request)
search.start { (response,error) in
}