动态重新加载传单图块

Dynamically reload leaflet tiles

我想根据对用户 activity 的更改加载特定的传单图块。因此,比方说,用户打开地图并看到特定的图块。然后,几分钟后,重新加载一些图块(因为它们已更改)并显示。也许原来的是橙色的,新的是蓝色的。

This question and answer 给出一个可以刷新 所有 磁贴的建议,但效率很低。

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

您必须为此实现一个插件,子类化 L.TileLayer 并覆盖它的 createTile() 方法,这样您要么拥有对图块的引用,要么添加某种超时或逻辑每个(loading/loaded)块。

目前还没有通用的方法,您必须编写代码。

我知道我来晚了,但我有解决办法。您可以使用仅为应重新加载的图块更新的参数来操纵 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) returns 与上次相同的值,将使用缓存的图块。否则将获取一个新图块。