我今天遇到了这个问题,您只需要异步加载API。与其说这是一个变通方法,不如说是一个有文档的替代方案,您可以在这里阅读:
https://developers.google.com/maps/documentation/javascript/tutorial#asynch
本质上,您只需要像这样更改任何代码:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=SET_TO_TRUE_OR_FALSE" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var map = new google.maps.Map(/* ... */);
}
window.onload = initialize();
</script>
对此(几乎完全从上面的链接中删除):
<script type="text/javascript">
function initialize() {
var map = new google.maps.Map(/* ... */);
}
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
这里需要注意的关键是,你必须通过
回调
script.src标记的参数(在本例中,我们提供
初始化
,但它可以是任何你想要的)-这将允许谷歌在动态注入的maps脚本标记完成加载时启动你的初始化代码。
第二个机制修复了我的僵尸测试。