2012-03-22 34 views
8

我實例爲谷歌地圖API(3級)自動完成輸入,就像這樣:如何開啓和關閉谷歌地圖自動完成功能?

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

如何在運行時打開自動完成功能的開啓和關閉?

+0

我不明白,你不想在你的網站上使用自動完成?那麼,爲什麼不刪除代碼呢? – 2012-03-22 19:38:27

+0

我想打開和關閉它 – 2012-03-22 19:53:03

回答

2

有相關的自動完成

  1. 輸入元素
  2. 包含列表條目一個div兩個元素。這個div將被追加到身體,並有類「pac容器」

所以你可以做的:通過修改他們的顯示樣式顯示或隱藏兩個元素。


如果無法隱藏輸入,則可以用輸入克隆代替輸入,這將刪除自動完成功能。

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

要恢復自動完成,請再次執行您想要執行的操作。

+0

我不能隱藏輸入:/ – 2012-03-22 23:41:32

+0

上面增加了另一個建議 – 2012-03-23 01:10:19

8

Dr.Molle的解決方案不適合我。

我發現的解決方案是clearListener和除去PAC-容器:

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

現在我可以打開/關閉谷歌放置自動填充。

+0

您確定這是在功能上禁用自動填充嗎?它在視覺上可行,但當我註釋$('。pac-container')。remove()時,監聽器/自動完成仍然是活動的。 – 2014-05-06 14:31:51

+0

是的,我使用它來在Google地圖自動填充和我自己的數據之間切換。 – Jerome2606 2015-01-26 19:54:42

+0

爲什麼在這裏使用'google.maps.event.removeListener'?你正在使用'google.maps.event.clearInstanceListeners',這就夠了。 – Erik 2015-02-11 20:19:55

9

刪除所有添加到自動填充的偵聽器。

autocomplete.unbindAll(); 

刪除添加到輸入元素的所有偵聽器。

google.maps.event.clearInstanceListeners(input); 

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

+0

聖潔的廢話,是的謝謝你!在發生多次失敗的輸入時,花費了數小時嘗試在Google地點和另一個API之間切換,這實際上解決了問題。禁用Places後,我們的其他服務顯示了一些建議,但是,儘管其他事件被禁用且容器隱藏,但谷歌仍然通過填充輸入提供了關鍵字。 – drew010 2016-06-07 21:46:04

0

如果寫到這裏什麼都不爲你工作,你可以嘗試只是隱藏它。 輸入時出現地方的字段位於css class .pac-container中,因此只需在css display:none中聲明它即可。然後它不會出現在搜索框中輸入。實際上它不是定製它的方法。