グラウンド オーバーレイとして 1 つの画像がある場合は、次のようにします。
- JavaScript で img タグを作成する
- そのsrcをoverlays/layer1.pngに設定します
- 待機ボックスを表示する
- それに onload イベントを追加して、gmaps オーバーレイとしてロードし、待機ボックスを閉じます。
進行状況...それはもう少しブラウザ固有です。しかし、ロードは簡単なので:
function loadOverlay(){
var img = new Image();
var img_url = "overlays/layer1.png"
img.src= img_url;
$('#wait_for_overlay').show();
img.onLoad = function(){
$('#wait_for_overlay').hide();
var layer1 = new google.maps.GroundOverlay(img_url,imageBounds);
layer1.setOpacity(.5);
layer1.setMap(map);
}
};
これがうまくいく理由:
img オブジェクトを作成し、その 'src' 属性を設定すると、これを行う JavaScript 関数が終了するとすぐに、ブラウザーは要求されたファイルのダウンロードを開始します。
ブラウザはこの画像をローカル キャッシュに入れ、次に onLoad 関数を呼び出して、画像がどうなるかを確認します。
コールバックは実際には img 変数に対して何もしません (おそらくそうすべきです。クロージャー ルールに従って消去されないようにし、バグがある場合は NOP を実行します)、代わりに google-maps 関数を呼び出します。
google-maps 関数は、まったく同じ URL で画像をリクエストします。この URL でブラウザはキャッシュ テーブルを検索し、画像をキャッシュからすぐに戻します。
このトリックは厄介ですが、実際には、Google マップ エンジンはまったく同じ onLoad をバックグラウンドで実行します (これがマップ エンジンのしくみです)。
これであなたの質問が満たされることを願っています...プログレスバーはなく、ロードインジケーターのみです...おそらく、XHRでリクエストして進行状況を確認することでプログレスバーを実行できますが、わかりませんが、トリックは同じです:キャッシュに到達させるための偽のリクエスト。