Я использую функцию автозаполнения Google Maps для геокодирования. Кажется, он возвращает много данных, но не lat/lng. Есть ли способ получить эту информацию? Я хотел бы передать его обратно в мое бэкэнд-приложение для дальнейшей обработки.
Автозаполнение Google Maps: как получить lat/lng?
Ответ 1
ОК, я не знаком с местами или автозаполнением. Но похоже, что вы ищете
autocomplete.getPlace().geometry.location
Чтобы продемонстрировать, я принял этот пример и добавил строку выше для создания этот JSFiddle, в котором вы можете ввести имя места, и когда он будет выбран, создается инфоиндуст с LatLng.
В частности, он прослушивает выбор пользователя, а затем обновляет инфо-окно.
google.maps.event.addListener(autocomplete, 'place_changed', function() {
infowindow.close();
var place = autocomplete.getPlace();
...
infowindow.setContent('<div><strong>' + place.name +
'</strong><br>' + address + "<br>" + place.geometry.location);
Ответ 2
Существуют методы, называемые lat() и lng(), которые существуют в прототипе объекта геометрии. Поэтому для получения значений просто используйте следующее:
var place = autocomplete.getPlace();
var lat = place.geometry.location.lat(),
lng = place.geometry.location.lng();
// Then do whatever you want with them
console.log(lat);
console.log(lng);
console.warn('Warning: I didn\'t test this code!');
Ответ 3
В других ответах отсутствует критический компонент. Вам нужно включить 'geometry'
, когда вы звоните setFields
. Имейте в виду, что дополнительные поля могут стоить дороже.
Пример:
// Avoid paying for data that you don't need by restricting the set of
// place fields that are returned to just the address components.
autocomplete.setFields(['address_component', 'geometry']);