javascript - Openlayers 3 替换失败的图 block

标签 javascript openlayers-3 tile

我们正在运行 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/

相关文章:

JavaScript 错误 : Invalid Token when using ReCaptcha API

javascript - 开放层 : how to turn on visibility of a layer?

java - 如何在JavaFX/ScalaFX中实现可滚动、可缩放的 map ?

javascript - Openlayers 3 特征的 z 排序

openlayers - 如何按名称删除图层 - openlayers 3

java - LibGDX GraphicBug TiledMap 正交相机

java - Libgdx:用于碰撞的平铺对象层

javascript - htaccess 搞砸了 Ajax 哈希 # 标记

javascript - foreach : binding not working ko. 映射.fromJS 数据

javascript - 如何在 Firefox 和 Chrome 中使用 'let'(以及支持的 ECMAScript 6 功能)