在异步加载Google地图时处理网络断开连接

时间:2012-06-20 08:20:18

标签: javascript google-maps google-maps-api-3

尝试异步加载Google地图,以便更快地启动HTML页面。

使用了链接中提到的以下代码:https://developers.google.com/maps/documentation/javascript/tutorial#asynch。部分:异步加载API。

function initialize() {
  var myOptions = {
    zoom: 8,
    center: new google.maps.LatLng(-34.397, 150.644),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

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;

的问题:

  1. 在调用loadScript()函数后断开网络连接。目前我们还没有发现检查网络连接是否已终止&做适当的错误处理。
  2. 即使网络有时可用,也不会调用回调函数“initialize()”。
  3. 即使在3G网络上,在移动设备上加载谷歌地图也非常缓慢。

    在上述两种情况下,我们在调用loadScript()后立即启动加载图标。由于initialize()没有被回调,它会在加载图标中被无限期阻止。

  4. 请提供一些指示来处理网络断开连接&回调函数没有调用问题。

1 个答案:

答案 0 :(得分:1)

Maps API没有本机方式来处理此问题。谢天谢地HTML5呢。收听document.online / document.offline事件是非常有效的,我用它来解决这个问题。

请参阅https://developer.mozilla.org/en/DOM/document#Event_handlers

至少iOS 5和Android 2.3支持此功能。

您还可以使用setTimeout检查是否已发生API回调,如果没有,则进行相应处理。