2011-02-07 3 views
2

У меня есть TMS слой, который выглядит примерно так:.Как обновить слой TMS в OpenLayers?

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(); 

Однако, эти плитки не получают запрошенную когда я перерисовывать().

Любая помощь приветствуется.

+0

Ой ... Я хотел сказать, my_var = 1 и my_var = 2 что v = 1 и v = 2. – Paul

ответ

1

Поскольку слои TMS наследуются от уровня Grid, вы можете попытаться вызвать метод clearGrid() для удаления всех существующих фрагментов, а затем spiralTileLoad() для загрузки новых.

+0

Спасибо! Я обнаружил, что мне не нужен clearGrid(), а скорее просто my_tms.url = "my_mapserver.php? V =" + my_var + "&"; my_tms.spiralTileLoad(); my_tms.redraw(); – Paul

0

layer.redraw();, OpenLayers.Strategy.Refresh и clearGrid() не помог мне в перегрузочной плитку OpenLayers.Layer.TMS слоя в OpenLayers 2.13.1, но помог:

layer.mergeNewParams({}); 
Смежные вопросы