在 OpenLayers 3 tileloadstart 事件中停止加载图块

Posted

技术标签:

【中文标题】在 OpenLayers 3 tileloadstart 事件中停止加载图块【英文标题】:Stop loading a tile in OpenLayers 3 tileloadstart event 【发布时间】:2016-02-17 11:08:05 【问题描述】:

我在 OpenLayers 3(版本 3.13.1)中有一个使用 XYZ 源的 Tile 层,其 url 属性设置为 http://my.server/map/zz/rowy/z_x_y.jpg。在我的服务器上,z2 到 z8 文件夹中的平铺图像可用。但是 OpenLayers 也尝试从不存在的文件夹 z1 中获取图像。地图显示正确,但我的浏览器控制台显示文件未找到错误。有没有办法在 tileloadstart 事件中停止加载明显不存在的图块?我的代码如下:

function createTileLayer() 
    var xyzSource = new ol.source.XYZ(
         url: 'http://my.server/map/zz/rowy/z_x_y.jpg'
    );

    xyzSource.on('tileloadstart', function(evt) 
        if (evt.tile.tileCoord[0] == 1) 
             // Stop loading the Tile ?!?!
        
    );

    return new ol.layer.Tile(
        extent: _maxExtent,
        preload: 1,
        source: xyzSource
    );

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

解决方案是正确设置源,使其不会尝试获取您没有可用的缩放级别的图像:

var xyzSource = new ol.source.XYZ(
  url: 'http://my.server/map/zz/rowy/z_x_y.jpg',
  tileGrid: ol.tilegrid.createXYZ(
    minZoom: 2,
    maxZoom: 8
  )
);

【讨论】:

这确实是解决方案。我不知道 ol.tilegrid.createXYZ 函数。非常感谢:) 谢谢@ahocevar

以上是关于在 OpenLayers 3 tileloadstart 事件中停止加载图块的主要内容,如果未能解决你的问题,请参考以下文章

Openlayers 3 forEachLayerAtPixel 只获取层

OpenLayers 3 - Bing 地图不会在 Windows 应用程序中加载

如何从业力测试触发 openLayers 3 'singleClick'

openlayers 3缩放到组合范围

OpenLayers 3 基础知识

Openlayers 3 - wfs-t:更改几何字段的名称