3

Google Maps API の Max Zoom Service を使用して、特定の座標の最大ズーム レベルを取得しています。ほとんどの場合、高速で、各リクエストは約 150 ミリ秒しかかかりません。ただし、サービスが非常に遅くなり、約 20 秒になる場合がいくつかありました。

maxZoomService = new google.maps.MaxZoomService();
maxZoomService.getMaxZoomAtLatLng(center, function(response) {

// my process

});

同様の問題が発生しましたか?

4

1 に答える 1

0

はい、同じ問題が発生しました。wkhtmltopdf を使用して PDF ファイルに含めるマップ イメージを生成するために、wkhtmltoimage を使用しています。画像が生成される最大時間を設定する必要があります。短すぎると、画像を作成するためにすべてのマップ タイルをダウンロードできないことがよくあります。長すぎると、ユーザーにとって非常に顕著な遅延が発生します (私たちの接続では 5 秒が最適のようです) 生成された衛星地図が MaxZoomService を使用して最大ズーム レベルを超えないようにしたかったのですが、そのときにサービスで問題が発生しました。

これは非同期サービスであるため、マップを作成して正しい .map タイルのダウンロードをトリガーする前に、サービスが最大ズーム レベルを報告するのを待つのが理想的です。

サービスが非常に遅い場合にマップのデフォルトの「フォールバック」ズームを設定することは、実際にはオプションではありません。その後、サービスから戻り値を取得するときにズーム レベルを更新すると、ほとんどの場合、新しいタイルが再ロードされ、より多くのタイルが必要になるためです。遅れ...

私たちのように、特定の繰り返し可能な場所 (データベースなど) に関心がある場合は、最大ズーム レベルを事前にキャッシュ (保存) し、更新された値を定期的にチェックすることが 1 つのオプションかもしれません。

私たちの特定のケースでは、他の唯一のオプションは、サービスに特定の時間 (たとえば 2 秒) を許可し、応答しない場合はデフォルトのズームにフォールバックすることです。

理想的ではありませんが、サービスの「髪の悪い日」を処理できます...

于 2013-03-15T10:41:02.353 に答える