Google Maps Autocomplete API X Geocoder
Я пытаюсь использовать API автозаполнения Карт Google, но есть некоторые расхождения между ним и API Geocoder, например:
В API автозаполнения я пытаюсь найти адрес "Rua Tiradentes, 1020, Ibirubá", когда я выбираю в списке, компонент адреса "street_number" не появляется, проблема с этим и другими адресами.
Давайте попробуем с геокодером API:
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': 'Rua Tiradentes, 1020, Ibirubá' }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results);
} else {
alert("Geocoder failed due to: " + status);
}
});
Теперь street_number находится внутри address_components, есть ли обходной путь, или автозаполнение Google ненадежно?
Вот код места:
var b = new google.maps.places.Autocomplete(myInput);
google.maps.event.addListener(b, 'place_changed', function () {
console.log(b.getPlace());
})
1 ответ
Возможный обходной путь заключается в следующем. Вы можете попытаться геокодировать место, чтобы получить все компоненты адреса. Недавно Google добавил возможность геокодировать адреса, используя placeId в качестве параметра запроса.
Вы можете найти более подробную информацию в документации: https://developers.google.com/maps/documentation/javascript/geocoding https://developers.google.com/maps/documentation/javascript/3.exp/reference
Таким образом, вы можете получить место, как var place = autocomplete.getPlace(); Вы можете получить идентификатор места, например place.place_id, и выполнить запрос геокодирования, например:
geocoder.geocode( { 'placeId': place.place_id}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});