2014-03-05 157 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