2011-12-19 1 views
5

私はTMSレイヤーを持つOpenLayersマップを持っています。各ズームの変更につき、私のマップは約56の地図タイル要求をします(マップ/画面サイズに依存します)。ユーザーが急速にズームインまたはズームアウトすると、これらのマップタイル要求はすべてキューに入れられ、OpenLayersからのマップタイル要求は非同期に呼び出されません。したがって、ユーザーが急速にズームインまたはズームアウトすると、不要になったマップタイルに対する多くのリクエストが終了し、必要なものは以前のすべてのリクエストが行われるまでロードされません。ズームが変更されたときにOpenLayersで未処理のマップタイルリクエストを中止するにはどうすればよいですか?

ズームが変化したときに、保留中のマップタイル要求を中止する方法はありますか? OpenLayersを経由しない場合は、保留中のリクエストを特定のURLにアボートする方法はありますか?

+0

OPEN LAYER APIについては、KEY UP、KEY DOWNなどのイベントがあります。一度キーを押すと、イベントを制御してリクエストを送信できます。また、以前に積み上げられたリクエストを削除するのに役立つ関数destroy()があります。 –

+0

ここで確認できるクラスはhttp://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Control-js.html#OpenLayers.Controlで、これをすべて処理できます。それが役に立てば幸い。よろしいですか? –

答えて

2

アップデートをOpenLayersを2.12以上、このバージョン以降タイルキューがされているので、古いリクエストを避けるようになりました。 OpenLayers 2.12 Release Notesから引用するには:グリッド層におけるタイルの読み込みが 今キューで実行されるように

をタイリングコードがオーバーホールされました。タイルキューは、サーバーに送信されたタイル 要求をより詳細に制御します。 ではないタイルの保留中のリクエスト(たとえば、ズームまたはパン後)が回避されます。この場合、パフォーマンスが向上し、サーバー負荷が軽減されます。

+0

これはまだ有効ですか?コードはもはやマスターには存在せず、同様のものに置き換えられているようです。より良い?しかし、問題は依然として私のクライアントに存在します。 – relet

1

あなたがマウスホイールによるズームを定義したら、あなたはすべての中間zoomlevelsのためのロードタイルを防ぐために、次のコードを使用することができます。

new OpenLayers.Control.Navigation({ 
    "zoomWheelEnabled": true, 
    "mouseWheelOptions": { 
     "interval": 250, 
     "cumulative": true 
    } 
}) 
関連する問題