2014-03-05 242 views

回答

2

正在發生的事情是,<input>元素是HTML標記的一部分,並且是在頁面上也可見之前谷歌地圖已經完成initalization 。這不是一個錯誤,甚至是意外的行爲。你有兩個選擇:

)設置<input>visibility隱藏:

<input id="pac-input" class="controls" type="text" 
placeholder="Enter a location" style="visibility:hidden;"> 

並顯示框,因爲過去的事情在initialize()

google.maps.event.addListener(map, 'idle', function() { 
    input.style.visibility='visible'; 
}); 

看到小提琴 - >http://jsfiddle.net/xkAaJ/

)按代碼創建輸入框。取出<input>標記,並與

var input = document.createElement('input'); 
input.id="pac-input"; 
input.className="controls"; 
input.type="text"; 
input.placeholder="Enter a location"; 

看到更換

var input = /** @type {HTMLInputElement} */( 
     document.getElementById('pac-input')); 
initialize()

小提琴 - >http://jsfiddle.net/wy6X3/

的代碼示例是基於谷歌的地方比如你是指的在題。

+1

謝謝。我最終找到了自己的第一個解決方案,但我更喜歡第二個解決方案。還要注意'placeHolder'應該是'placeholder'。 – Ferguzz

+1

這很有趣。對我來說,我可以覆蓋佔位符,沒有問題。例如,在你的jsfiddle鏈接中,我可以改變它,無論我想要什麼。 – Ferguzz

+0

你是對的,沒有正確的「placeHolder」,當它沒有設置谷歌分配「輸入位置」的本地語言版本。今天一切都出錯了:( – davidkonrad