Я использую Google Places API для поиска названий городов. В моем контроллере представления я соответствую 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.
То, что я пытался :
Я пытался только извлечь названия городов + стран. Это работает для итальянских городов, но не работает для городов с одинаковыми названиями: Нью-Йорк, Нью-Йорк и Нью-Йорк, IA et c (вы получите неправильные результаты).
Другое решение - попытаться использовать prediction.attributedFullText.string
и, если это не сработает, повторите попытку с описанным выше обходным путем.
У кого-нибудь возникла такая же проблема или есть идея, как справиться с ней более изящно? Я знаю, что это своего рода крайний случай, но я считаю, что Google Places должен был подумать о результатах работы с CLGeocoder.