16

私はGoogle Maps APIを使ってウェブアプリケーションを構築していますが、スムーズにズームする必要があるため、毎秒ズームレベルを上げるのにsetTimeoutを使用しますが、ネットワークの悪い場所ではマップ画像が遅すぎますページはすばやくので、私の質問があるGoogleマップの一部をどのようにプリロードするのですか?

....白のページへ向けることは、Googleマップの一部をプリロードすることが可能である(3から地点の16までズーム)

+0

私は同じ問題を抱えています。ズームレベルをよりスムーズに変更したいのですが... – Flaudre

+1

@Flaudre RASGのソリューションを試しましたか? – wong2

+1

ゆっくりとズームインしても、接続が遅いユーザーにとっては最高のユーザーエクスペリエンスではないでしょうか?すべてのデータをあらかじめロードしていても、ある時点で多くの画像がロードされるのを待たなければなりません。 – dpix

答えて

12

あなたはおそらく事前ことができ隠しdivまたはiframeに読み込みます。

しかし、あなたは確かにそれはデータのエクスポートまたはコピーに対するGoogle Maps/Google Earth APIs Terms of Service

10.1.3制限事項に反しないすべきです。

(b)コンテンツのプリフェッチ、キャッシング、または保存はしません。 ( ) Maps APIの実装を一時的に安全に行う場合は、 のパフォーマンスを向上させるためにコンテンツ量が制限されていますが、その場合は、 個のコンテンツが保存されることを除いて、 サービスの外部のコンテンツの使用を許可しない方法で、 (ii)Maps APIの特別な保管を許可するコンテンツ識別子またはキー。たとえば、 の独立したデータベースを作成するためにコンテンツを使用してはならない「の場所を。」

+1

素晴らしい何の説明もせずにdownvote。 – RASG

+0

パフォーマンスを向上させるためにプリロードするのは問題ありません。 – dalore

+0

ToSは@RASGの提案された解決策ではないようです。だからそれと一緒に行くと、心配しないでください!おい、私たちはどんな裁判所にもあなたを戻します! – NDFA

4

いくつかのコード

を作る私は5歳に基づいてスクリプトを作成しましたRASGのアイデア。隠しマップを作成して、完全にロードされたらズームインしてください。すべてのズームをキャッシュするまで何度も何度もやります。作業はfiddle is hereです。ズームの進行状況を表示するには、右上隅にdivという情報を配置しました。

// init the hidden map 
var mapOptions = { 
    center: new google.maps.LatLng(center.lat, center.lng), 
    zoom: minZoom + 1 
}; 
var preMap = new google.maps.Map(document.getElementById('map-canvas-hidden'), mapOptions); 

// when the current hidden map is fully loaded, zoom it in 
preMap.addListener('tilesloaded', function() { 
    $('#out').html('Zoom ' + preMap.getZoom() + ' preloaded'); 

    // if there is zoom to zoom-in, do it after some rest 
    if(preMap.getZoom() < maxZoom) { 
    setTimeout(function(){ 
     preMap.setZoom(preMap.getZoom() + 1); 
    }, 50); 
    } 
}); 

実際に地図をキャッシュしていますか?

まあ、ブラウザのキャッシュをクリアし、フィドルを開きます。

enter image description here

は、ブラウザのネットワークアクティビティでは、ダウンロードした画像をたくさん見ることができます。次に、地図をズームインしてアクティビティをもう一度見てください。すべての画像がキャッシュから読み込まれるように見えます。

enter image description here

はそれがお役に立てば幸いです。

+0

遅いズームインの速度は、最初の2つのキャッシュが取得するまでに計算できます。 –

+0

非常に良い! +1あなたの手を汚くするために:) – RASG

+0

ちょっとイバン、おかげで多くの努力のために。私はあまりにも遅く、賞金を報いるためにページをチェックした。私はあなたが単なるupvoteで大丈夫だと思います。 – Flaudre

関連する問題