在重新绘制Leaflet中的图层时,如何在每个新图块加载之前保留旧图块?

时间:2014-08-05 13:00:59

标签: leaflet redraw

我正在使用组合的tilelayer,每次添加新图层或删除旧图层时,我必须刷新(当前使用.redraw())。我的实现没有技术问题,但是当一个图层被切换时,会有一个短暂的闪烁,因为旧的图块会被立即删除,但是新图块显然需要花费一些时间才能加载。

是否有任何方法可以保留每个旧瓷砖,直到其更换已加载,从而实现更平滑的过渡?

我考虑过使用临时图层,并将新图块加载到旧图块上方,但这会导致大量额外的工作和加载,所以我希望传单内置更优雅,就像一个delayRemoval选项等等。


这是一个小伙伴:http://jsfiddle.net/Q6586/

如果你点击地图,它会自动重绘,立即删除旧的图块,地图会在加载新图块之前暂时闪烁灰色。

我想摆脱那个闪光灯。我暂时通过在旧版本之上创建一个新图层来解决这个问题,但我觉得这是一个非常不优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以创建另一个图层,在重绘时将它带到前面。

事件'load'将告诉您何时加载所有图块

map.on('click', function(e) {
    layer2.bringToFront();
    layer.on('load', function(e) {
        console.log('loaded');
        layer.bringToFront();
    });
    layer.redraw();
});

看看这个JSFiddle:http://jsfiddle.net/FranceImage/5452r/

我打电话给不同的瓷砖,你可以看到。显然,您将对两个切片图层使用相同的模板。