Как обновить слой TMS в OpenLayers? - PullRequest
2 голосов
/ 07 февраля 2011

У меня есть слой 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();

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

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

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

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

0 голосов
/ 11 февраля 2014

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

layer.mergeNewParams({});
...