Подтвердить что ты не робот

Автозаполнение Google Maps: как получить lat/lng?

Я использую функцию автозаполнения Google Maps для геокодирования. Кажется, он возвращает много данных, но не lat/lng. Есть ли способ получить эту информацию? Я хотел бы передать его обратно в мое бэкэнд-приложение для дальнейшей обработки.

4b9b3361

Ответ 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']);

см. документы