2

次のようなTMSレイヤーがあります。

var v = 1;
my_tms = new OpenLayers.Layer.TMS(
    "My TMS",
    "my_mapserver.php?v="+my_var+"&",
     { transparent: 'true', type:'png', getURL:get_my_url }
);

my_mapserver.phpは、vの値に従ってマップタイルを返します。

このアプリではユーザーがvを変更でき、my_tmsレイヤーを更新したいだけですが、これまでのところ、更新するには、マップを破棄して再作成するしかありません。

私はこのようなことをすることができると思いました:

v = 2;
my_tms = new OpenLayers.Layer.TMS(
    "My TMS",
    "my_mapserver.php?v="+my_var+"&",
     { transparent: 'true', type:'png', getURL:get_my_url }
);
my_tms.redraw();

ただし、redraw()を実行しても、これらのタイルは要求されません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

TMS レイヤーは Grid レイヤーから継承するため、clearGrid() メソッドを呼び出して既存のタイルをすべて削除してから、spiralTileLoad() を呼び出して新しいタイルをロードすることができます。

于 2011-02-07T21:23:07.133 に答える
0

layer.redraw();、OpenLayers 2.13.1 でレイヤーのタイルをリロードするのに役立ちませんでしたが、助けましOpenLayers.Strategy.RefreshclearGrid():OpenLayers.Layer.TMS

layer.mergeNewParams({});
于 2014-02-11T10:55:37.953 に答える