动态重新加载传单瓦片

时间:2016-05-25 20:55:45

标签: javascript maps leaflet

我想根据用户活动的变化加载特定的传单图块。因此,用户打开地图并查看特定的图块。然后,几分钟后,一些瓷砖被重新加载(因为它们已经改变)并显示出来。原来可能是橙色,新的是蓝色。

This question and answer提供了一个可以用于刷新所有切片的建议,但这样效率会相当低。

有没有办法强制重新加载特定的单个图块?

2 个答案:

答案 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)返回的值与上一次相同,则将使用缓存的图块。否则,将获取一个新的图块。