我们正在运行 Open Layers 3.15。 有时我们会遇到掉落或失败的瓷砖。 目前它什么也不显示(这可能会让我们的用户感到困惑),因此我们想用一个显示“无数据”或其他内容的图 block 来替换它。 我尝试过获取事件并替换图 block 的源,例如
source.on('tileloaderror', function(){
source.setUrl('./images/map/failureTile.png');
});
但这样做的问题是,它不是在 1 个图 block 上执行此操作,而是对整个图层执行此操作,我们不希望这样。
有人知道我们如何只针对失败的图 block 而不是整个层执行此操作吗?
最佳答案
现在是 2018 年了,但对于可能需要这个的人来说。在 v5.3.0 上测试
source.on('tileloaderror', function (event) {
var tileLoadFunction = function (imageTile, src) {
imageTile.getImage().src = './images/map/failureTile.png';
};
if (event.tile.tileLoadFunction_ != tileLoadFunction) {
event.tile.tileLoadFunction_ = tileLoadFunction;
event.tile.load();
}
});
此代码依赖于暴露的私有(private)函数event.tile.tileLoadFunction_
。
不幸的是,xnakos 的答案在 v5.3.0 上不起作用,因为 event.tile.getImage()
已被内部错误处理程序替换为 1x1 Canvas 图像。
另请注意,直接更改 event.tile.src_
似乎是一种选择,但由于缓存 key 或其他原因,它不起作用。
关于javascript - Openlayers 3 替换失败的图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744685/