Как включить и выключить автозаполнение google-maps?
Я создаю экземпляр автозаполнения для Google Maps API (Уровень 3), например:
var input = document.getElementById('szukanyAdres');
autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
Как включить и выключить функцию автозаполнения во время выполнения?
4 ответов
есть два элемента, связанные с автозаполнения
- вход-элемент
- 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. На самом деле это не способ настроить его.