来自 Google Places 地址的核心位置地理编码不适用于意大利城市
Core Location geocoding from Google Places address does not work for Italian cities
我正在使用 Google 个地点 API 来搜索城市名称。在我的视图控制器中,我符合 GMSAutocompleteResultsViewControllerDelegate
:
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didSelect prediction: GMSAutocompletePrediction) -> Bool {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(prediction.attributedFullText.string) { (placemark, error) in }
return true
}
我需要 CLGeocoder
以便从我从 Google 地点 API 获得的地址字符串中提取 CLLocation
。这对除意大利城市以外的大多数情况都适用。 Geocoder 无法处理完整地址(来自 Google Places 结果的示例:Roma, Metropolitan City of Rome, Italy)。发生的事情是您收到 CLGeocoder 错误。
我试过的:
我试过只提取城市+国家名称。这适用于意大利城市,但不适用于同名城市:New York, NY 和 New York, IA 等(你会得到错误的结果)。
另一种解决方案是尝试使用 prediction.attributedFullText.string
,如果它不起作用,请重试上述解决方法。
有人遇到过同样的问题或知道如何更优雅地处理它吗?我知道这是一种边缘情况,但我相信 Google Places 应该考虑使用 CLGeocoder 的结果。
您可以使用回调函数轻松获取coordinates
和formattedAddress
。
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(String(describing: place.name))")
print("Place address: \(String(describing: place.formattedAddress))")
print("Place attributions: \(String(describing: place.attributions))")
dismiss(animated: true, completion: nil)
// get the selected coordinates and address like this
let yourCordniates = place.coordinate
let yourAddress = place.formattedAddress ?? ""
}
我正在使用 Google 个地点 API 来搜索城市名称。在我的视图控制器中,我符合 GMSAutocompleteResultsViewControllerDelegate
:
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didSelect prediction: GMSAutocompletePrediction) -> Bool {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(prediction.attributedFullText.string) { (placemark, error) in }
return true
}
我需要 CLGeocoder
以便从我从 Google 地点 API 获得的地址字符串中提取 CLLocation
。这对除意大利城市以外的大多数情况都适用。 Geocoder 无法处理完整地址(来自 Google Places 结果的示例:Roma, Metropolitan City of Rome, Italy)。发生的事情是您收到 CLGeocoder 错误。
我试过的:
我试过只提取城市+国家名称。这适用于意大利城市,但不适用于同名城市:New York, NY 和 New York, IA 等(你会得到错误的结果)。
另一种解决方案是尝试使用 prediction.attributedFullText.string
,如果它不起作用,请重试上述解决方法。
有人遇到过同样的问题或知道如何更优雅地处理它吗?我知道这是一种边缘情况,但我相信 Google Places 应该考虑使用 CLGeocoder 的结果。
您可以使用回调函数轻松获取coordinates
和formattedAddress
。
func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
print("Place name: \(String(describing: place.name))")
print("Place address: \(String(describing: place.formattedAddress))")
print("Place attributions: \(String(describing: place.attributions))")
dismiss(animated: true, completion: nil)
// get the selected coordinates and address like this
let yourCordniates = place.coordinate
let yourAddress = place.formattedAddress ?? ""
}