1

尝试异步加载 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 回答 1

1

Maps API 没有本地方式来处理这个问题。值得庆幸的是 HTML5 做到了。监听 document.online / document.offline 事件非常有效,我已经用它来解决这个问题。

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

这至少在 iOS 5 和 Android 2.3 中受支持。

您还可以使用 setTimeout 来检查 API 回调是否发生,如果没有发生则适当处理。

于 2012-06-20T12:09:40.437 回答