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); 
  } 
});