我想根据用户活动的变化加载特定的传单图块。因此,用户打开地图并查看特定的图块。然后,几分钟后,一些瓷砖被重新加载(因为它们已经改变)并显示出来。原来可能是橙色,新的是蓝色。
This question and answer提供了一个可以用于刷新所有切片的建议,但这样效率会相当低。
有没有办法强制重新加载特定的单个图块?
答案 0 :(得分:2)
您必须为此实现一个插件,继承L.TileLayer
并覆盖其createTile()
方法,以便您可以引用磁贴,或者添加某种超时或逻辑到每个(装载/加载)瓷砖。
目前还没有通用的方法,您必须对其进行编码。
答案 1 :(得分:1)
我知道我要迟到了,但是对此我有解决方案。您可以使用仅为应该重新加载的图块更新的参数来操纵url。其余的将保留缓存的图块图像。
L.TileLayer.CustomLayer = L.TileLayer.extend({
getTileUrl: (coords) => {
var test = some_function_deciding_test_based_on_tile(coords);
return `http://example.com/tile_${coords.x}_${coords.y}.png?test=${test}`;
}
});
在这种情况下,如果some_function_deciding_test_based_on_tile(coords)
返回的值与上一次相同,则将使用缓存的图块。否则,将获取一个新的图块。