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

时间:2012-03-22 19:06:47

标签: javascript google-maps google-maps-api-3 autocomplete

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

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

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

6 个答案:

答案 0 :(得分:12)

删除添加到自动填充的所有侦听器。

autocomplete.unbindAll();

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

google.maps.event.clearInstanceListeners(input);

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

答案 1 :(得分:8)

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');
}

现在我可以打开/关闭Google地方自动填充功能。

答案 2 :(得分:2)

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

  1. 输入元素
  2. 包含列表条目的div。这个div将附加到正文并具有“pac-container”类
  3. 所以你能做什么:通过修改它们的显示风格来显示或隐藏这两个元素。


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

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

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

答案 3 :(得分:0)

如果此处写的任何内容对您不起作用,您可以尝试隐藏它。 键入时出现位置的字段位于css类.pac-container中,因此只需在css display:none中声明它。然后在搜索框中键入时不会出现。实际上它不是定制它的方式。

答案 4 :(得分:0)

您可以尝试使用JQuery隐藏它:

$(".pac-container").hide(); //hide autocomplete

答案 5 :(得分:0)

我也遇到了问题(在我的应用中,我只想在用户在输入字段中输入至少4位数字时运行google的自动填充功能-当输入的字符串少于4位时,我正在使用自定义智能搜索)。

就我而言,上述解决方案也不起作用,所以我的解决方法是:

  1. 在需要时将不透明度设置为0($。'。pac-container')。
  2. 如果需要,还可以选择设置较低的z-index。