Google.maps回调似乎在api完全加载之前运行

时间:2013-11-19 14:13:59

标签: javascript jquery google-maps

如果用户点击包含地图的视图,我想加载maps.googleapis,因此我有代码来加载带有回调参数的API:

<script type="text/javascript">
$('div[data-role="page"]').bind('pagecreate', function () {
    var script = document.createElement("script");
    script.id = "addedformaps";
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=initMap";
    document.body.appendChild(script);
});

initMap函数引用google.maps对象中的项目,例如:

<script type="text/javascript">
function initMap() {
    var mapType = google.maps.MapTypeId.ROADMAP;

第一次加载视图时,我收到错误,因为google.maps.MapTypeId未定义。后续加载工作,直到清除浏览器缓存,然后再次发生错误。我可以通过向initMap函数添加SetTimeout来解决这个问题:

<script type="text/javascript">
setTimeout(function initMap() {
  ...
}, 500)
</script>

但我对减慢每一次负荷感到不舒服。为什么在google.maps对象完全加载之前执行回调函数?

0 个答案:

没有答案