Что такое правильный способ, чтобы полностью удалить автозаполнение в GoogleMaps?
Я использую GoogleMap v3 автозаполнение, и мне нужно полностью удалить его и отключить все прослушиватели событий. Мой код для инициализации и привязки к событиям выглядит следующим образом:
var autocomplete = new google.maps.places.Autocomplete($("input").get(0), {
types: ["geocode"]
});
google.maps.event.addListener(autocomplete, 'place_changed', function () {
// handle events
});
Я не нахожу официального способа правильно удалить автозаполнение и отменить все события. Пожалуйста, укажи мне правильный путь.
Спасибо.
1 ответ:
Для развязки событий используйте
google.maps.event.clearInstanceListeners
.Для удаления функции автозаполнения не существует реализованного метода. Вы можете создать клон входных данных до того, как создадите автозаполнение, и когда вы хотите удалить функцию автозаполнения, замените текущий входной сигнал клоном.
//-------------------------------------------------------------- //this overides the built-in Autocomplete and adds a remove-listener //execute it once when the API has been loaded (function(ac) { google.maps.places.Autocomplete = function(node, opts) { var clone = node.cloneNode(true), pac = new ac(node, opts); google.maps.event .addListener(pac, 'remove', function(restore) { google.maps.event.clearInstanceListeners(pac); google.maps.event.trigger(node,'blur'); google.maps.event.clearInstanceListeners(node); if (restore===true) { node.parentNode.replaceChild(clone, node); } else { node.parentNode.removeChild(node) } }); return pac; } } (google.maps.places.Autocomplete)); //-------------------------------------------------------------------------- function initialize() { autocomplete = new google.maps.places .Autocomplete(document.getElementsByTagName('INPUT')[0], { types: ["geocode"] }); } google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places&.js"></script> <input/> <span> <input type="button" value="remove input" onclick="google.maps.event.trigger(window.autocomplete,'remove'); this.parentNode.parentNode.removeChild(this.parentNode);"/> <input type="button" value="remove autocomplete-functionality" onclick="google.maps.event.trigger(window.autocomplete,'remove',true); this.parentNode.parentNode.removeChild(this.parentNode);"/> <span>
Скрипт добавляет remove-listener к Automplete. Слушатель принимает один аргумент. Установите его в
true
, Когда вы только хотите удалить автозаполнение-функциональность. В противном случае вход будет удален полностью.