1

HTML ページの開始を高速化するために、Google マップを非同期で読み込もうとしています。

リンクに記載されているように、次のコードを使用しました: 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. モバイル デバイスでの Google マップの読み込みは、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 に答える