1

Я пытаюсь использовать Google Maps API автозаполнения, но есть некоторые расхождения между ним и Geocoder API, например:Google Maps API автозаполнения X 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

документация не очень понятно: * Следующие типы ** могут быть возвращены ** в результатах поиска места, в дополнение к типам, приведенным в таблице 1 выше. * См. https://developers.google.com/places/documentation/supported_types#table2. Если он может быть возвращен *, мы действительно не знаем, когда и почему он будет/не будут возвращены. – MrUpsidown

+0

И в основном документация по геокодированию тоже довольно неопределенная: * В дополнение к вышеуказанным, компоненты адреса ** могут включать в себя следующие типы: * https://developers.google.com/maps/documentation/geocoding/ #Types – MrUpsidown

+0

Я сообщил об ошибке на API карт, он должен вести себя как API-интерфейс геокодирования. Я написал резервную копию, если street_number имеет значение null, получить текст ввода и сделать запрос на геокодирование – Alexandre

ответ

0

Возможный обходной путь заключается в следующем. Вы можете попытаться геокодировать место, чтобы получить все компоненты адреса. Недавно Google добавил возможность геокодирования адресов с использованием параметра placeId в качестве параметра запроса.

Вы можете найти более подробную информацию в документации: https://developers.google.com/maps/documentation/javascript/geocoding https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderRequest

Таким образом, вы можете получить место, как вар место = autocomplete.getPlace(); Вы можете получить место ID как 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); 
    } 
}); 
Смежные вопросы