如何打开和关闭google-maps自动完成功能?

Mar*_*ewa 9 javascript google-maps autocomplete google-maps-api-3

我正在为Google Maps API(级别3)实例化自动填充输入,如下所示:

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

如何在运行时打开和关闭自动完成功能?

Ren*_*art 13

删除添加到自动完成的所有侦听器.

autocomplete.unbindAll();
Run Code Online (Sandbox Code Playgroud)

删除添加到input元素的所有侦听器.

google.maps.event.clearInstanceListeners(input);
Run Code Online (Sandbox Code Playgroud)

请参阅https://code.google.com/p/gmaps-api-issues/issues/detail?id=3429


Jer*_*606 9

Dr.Molle的解决方案对我不起作用.

我找到的解决方案是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');
}
Run Code Online (Sandbox Code Playgroud)

现在我可以打开/关闭谷歌地方自动完成.


Dr.*_*lle 4

有两个与自动完成相关的元素

  1. 输入元素
  2. 包含列表条目的 div。该 div 将附加到正文并具有“pac-container”类

那么你可以做什么:通过修改它们的显示样式来显示或隐藏这两个元素。


当无法隐藏输入时,您可以用输入的克隆替换输入,这将删除自动完成功能。

inputObject.parentNode.replaceChild(inputObject.cloneNode(true),input);
Run Code Online (Sandbox Code Playgroud)

要恢复自动完成功能,请再次执行您想要执行的操作。