Я использую API Google Адресов для поиска названий городов. В моем контроллере представления я соответствую GMSAutocompleteResultsViewControllerDelegate
:
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didSelect prediction: GMSAutocompletePrediction) -> Bool {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(prediction.attributedFullText.string) { (placemark, error) in }
return true
}
Мне нужно CLGeocoder
, чтобы извлечь CLLocation
из адресной строки, которую я получаю из Google Places API. Это отлично работает для большинства случаев, кроме итальянских городов. Геокодер не может обработать полный адрес (пример из результатов Google Адресов: Рим, столичный город Рим, Италия). Что происходит, вы получаете ошибку CLGeocoder.
Что я пробовал:
Я пробовал извлекать только названия городов и стран. Это работает для итальянских городов, но не работает для городов с тем же названием: New York, NY и New York, IA и т. Д. (Вы получаете неверные результаты).
Другим решением было бы попробовать с prediction.attributedFullText.string
, и, если это не сработает, повторите попытку с помощью вышеуказанного обходного пути.
У кого-нибудь была такая же проблема или есть идея, как с ней справиться более изящно? Я знаю, что это своего рода крайний случай, но я считаю, что Google Places должны были подумать о результатах работы с CLGeocoder.