Вопрос по google-maps-api-3 – Google maps Autocomplete: выводить только адрес без страны и города

6

я используюБиблиотека мест для автозаполнения ввода адреса. Поиск ограничен только одним городом, и я получаю вывод, как это:

"Россия, Москва, Ленинский проспект, 28"

Как спрятать "Россия, Москва"? ...

Мой запрос:

function() {
        // Search bounds
        var p1 = new google.maps.LatLng(54.686534, 35.463867);
        var p2 = new google.maps.LatLng(56.926993, 39.506836);
        self.options = {
            bounds : new google.maps.LatLngBounds(p1, p2),
            componentRestrictions: {country: 'ru'},
        };

        var elements = document.querySelectorAll('.address');

        for ( var i = 0; i < elements.length; i++) {
            var autocomplete = new google.maps.places.Autocomplete(elements[i],
                    self.options);
        }
Спасибо, я пытался, но окрестности - это свойство Place, и в моем случае autocomplete.getPlace () возвращает undefined. Не удалось найти решение. Artyom Chernetsov
Документы здесьdevelopers.google.com/maps/documentation/javascript/places скажи следующее, попробуйvicinity: A simplified address for the Place, including the street name, street number, and locality, but not the province/state, postal code, or country. For example, Google's Sydney, Australia office has a vicinity value of 5/48 Pirrama Road, Pyrmont. Heitor Chang

Ваш Ответ

5   ответов
3

Пример:

var autocomplete = new google.maps.places.Autocomplete(input, placesOptions);
var input = document.getElementById('searchTextField');

внутри "place_changed" Если вы делаете следующее:

placeResult = autocomplete.getPlace();
//This will get only the address
input.value = placeResult.name;

Это изменит значение в поле searchtext на улицу.

Второе место немного сложнее:

input.addEventListener('blur', function(){
// timeoutfunction allows to force the autocomplete field to only display the street name.
if(placeResult){ setTimeout(function(){ input.value = placeResult.name; }, 1); }

Причина, по которой мы должны это сделать, заключается в том, что если вы добавляете прослушиватель событий только для размытия, то места Google заполнят введенный файл полным адресом, поэтому вам придется & quot; ждать & apos; чтобы Google обновил, а затем форсировал ваши изменения, подождав несколько миллисекунд.

Попробуйте это без функции setTimeout, и вы поймете, что я имею в виду.

0

которая действительно была разрешима. Это в проекте Angular 2, но оно должно быть применимо и в других местах. Я отфильтровал результаты по заведениям и хотел показать только название и скрыть адресную часть результата. Это помогло мне, функцию, выполняемую после выбора предложения:

   getAddress(place: Object) {
    this.zone.run(() => {
        this.establishment = place['name'];
    });

гдеzone является компонентом NgZone, введенным в конструктор иthis.establishment переменная связана с[(NgModel)] в поле ввода.

0

var streetString = place.address_components[0] or place.address_components[1];

window.setTimeout(function() {
  $('input').val(streetString);
}, 200);

Это решение сработало для меня.

0

и из него вы можете получить часть, что вы хотите:

 google.maps.event.addListener(autocomplete, 'place_changed', function() {
          var place = autocomplete.getPlace();

теперь из "места" ты можешь получить это

place.geometry.location.lat()

и для адреса

place.address_components[0] or place.address_components[1] ...

зависит от того, что ты хочешь получить

2

EDIT

Вы не можете ". У меня было наоборот, что вы просто искали город. Нет способа распечатать только название улицы (я предполагаю, что это название улицы) из компонента адреса.

OPPOSITE OF WHAT WAS ASKED

Из документов:

the (cities) type collection instructs the Place service to return results that match either locality or administrative_area3.

var input = document.getElementById('searchTextField');
var options = {
  bounds: defaultBounds,
  types: ['(cities)']
};

autocomplete = new google.maps.places.Autocomplete(input, options);

Похожие вопросы