Как включить и выключить автозаполнение google-maps?

Я создаю экземпляр автозаполнения для Google Maps API (Уровень 3), например:

var input = document.getElementById('szukanyAdres');
autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);

Как включить и выключить функцию автозаполнения во время выполнения?

4 ответов


есть два элемента, связанные с автозаполнения

  1. вход-элемент
  2. div, который содержит список записей. этот div будет добавлен к телу и имеет класс "pac-container"

Итак, что вы можете сделать: показать или скрыть оба элемента, изменив их стиль отображения.


когда скрыть входные данные невозможно, вы можете заменить входные данные клоном входных данных, это приведет к удалению автозаполнение-функция.

inputObject.parentNode.replaceChild(inputObject.cloneNode(true),input);

чтобы восстановить автозаполнение, повторите то, что вы хотите сделать.


чтобы удалить все прослушиватели, добавленные в автозаполнение.

autocomplete.unbindAll();

удалить все прослушиватели, добавленные в элемент ввода.

google.maps.event.clearInstanceListeners(input);

см.https://code.google.com/p/gmaps-api-issues/issues/detail?id=3429


решение доктора Молле не работает для меня.

решение, которое я нашел, - это clearListener и удалить PAC-container:

var autocomplete;
var autocompleteListener;
function disableGoogleAutocomplete() {
    if (autocomplete !== undefined) {
            google.maps.event.removeListener(autocompleteListener);
            google.maps.event.clearInstanceListeners(autocomplete);
            $(".pac-container").remove();

            console.log('disable autocomplete to GOOGLE');
     }
}
function enableGoogleAutocomplete() {
    autocomplete = new google.maps.places.Autocomplete($("#inputDiv input")[0], options);
    autocompleteListener = google.maps.event.addListener(autocomplete, 'place_changed', function() { ... }
    console.log('set autocomplete to GOOGLE');
}

теперь я могу включить / выключить автозаполнение Google places.


Если все, что написано здесь, не работает для вас, вы можете попытаться просто скрыть его. Поле с местами, появляющимися при наборе текста, находится в классе css .pac-контейнер, поэтому просто объявите его в CSS display: none. Тогда он не появится во время ввода в searchbox. На самом деле это не способ настроить его.