5

TMS レイヤーを含む OpenLayers マップがあります。ズームを変更するたびに、私のマップはマップ タイルに対して約 56 のリクエストを行います (マップ/画面サイズによって異なります)。ユーザーがすばやくズームインまたはズームアウトすると、これらすべてのマップ タイル リクエストが順番にキューに入れられます。私の理解では、OpenLayers からのマップ タイル リクエストは非同期的に呼び出されません。そのため、ユーザーが急速にズームインまたはズームアウトすると、不要になったマップ タイルに対する多くのリクエストが発生し、以前のリクエストがすべて行われるまで、必要なタイルが読み込まれません。

ズームが変更されたときに保留中のマップ タイル リクエストを中止する方法はありますか? OpenLayers を使用しない場合、特定の URL への保留中のすべてのリクエストを中止する方法はありますか?

4

2 に答える 2

2

OpenLayers 2.12 以降に更新します。このバージョン以降、タイル キューが強化され、古いリクエストを回避できるようになりました。OpenLayers 2.12 Release Notesから引用するには:

タイリング コードが見直され、グリッド レイヤーでのタイルの読み込みがキューで行われるようになりました。タイル キューを使用すると、サーバーに送信されるタイル リクエストをより詳細に制御できます。不要になったタイルに対する保留中の要求 (ズームやパンの後など) が回避されるため、パフォーマンスが向上し、サーバーの負荷が軽減されます。

于 2012-08-21T10:32:28.493 に答える
1

マウスホイールによるズームを定義した場合、次のコードを使用して、すべての中間ズームレベルでタイルをロードしないようにすることができます。

new OpenLayers.Control.Navigation({
    "zoomWheelEnabled": true,
    "mouseWheelOptions": {
        "interval": 250, 
        "cumulative": true
    }
})
于 2012-08-21T10:10:11.090 に答える