我想执行像 Apple Weather 应用程序这样的位置查找,该应用程序显示每次击键时的潜在位置表。每次在文本字段中发生“编辑更改”事件时,我都会将用户的输入字符串发送到下面的函数。该字符串似乎已正确发送,但我没有得到预期的地标数组。例如“Chestnut”只返回“Chestnut, IL”,但如果我输入“Chestnut Hi”,我会得到四个元素:“Marshfield, MA”、“Wilbraham, MA”、“South Hadley, MA”和“Greenfield, MA” ”。然后键入“Chesnut Hil”会返回“Brookline, MA”,它甚至不在“Chestnut Hi”列表中。代码如下。非常感谢!
func forwardGeocoding(address: String) {
CLGeocoder().geocodeAddressString(address, completionHandler: { (placemarks, error) in
if error != nil {
print(error!)
return
}
var placeName = ""
var placeCoordinate = ""
self.placeNames = [] // empty arrays at the start of each geocode result
self.placeCoordinates = []
if (placemarks?.count)! > 0 {
for placemark in placemarks! {
if placemark.country != "United States" {
let city = placemark.locality ?? ""
let country = placemark.country ?? ""
placeName = "\(city) \(country)"
} else {
let city = placemark.locality ?? ""
placeName = "\(city), \(placemark.administrativeArea!)"
}
let coordinate = placemark.location?.coordinate
placeCoordinate = "\(coordinate!.latitude), \(coordinate!.longitude)"
self.placeNames.append(placeName)
self.placeCoordinates.append(placeCoordinate)
}
}
self.tableView.reloadData()
})
}