首页 > 解决方案 > 如何处理 openlayers tileloaderror 加载资源 404 失败?

问题描述

我正在使用 openlayers 4.6.5,我尝试捕捉类似的错误

function onLoadDie(evt){
    console.log("this tile does not load :", evt);
}

var source_xyz = new ol.source.XYZ({
                url: f_url,
                minZoom: 15,
            });
source_xyz.addEventListener('tileloaderror', onLoadDie);

404 仍然传播到控制台。这是控制台输出加上生成 404 的 Geoserver 的响应。我尝试修复 Geoserver 层也没有运气。

加载资源失败:服务器响应状态为 404(未找到)覆盖范围 [minx,miny,maxx,maxy] 为 [71508, 85624, 71511, 85627, 17],索引 [x,y,z] 为 [ 71512、85626、17]

标签: openlayersopenlayers-3geoserver

解决方案


通过在 openlayers 3.x 4.x 中创建时手动将范围属性添加到您的 ol.layer.tile 图层,范围属性将不会尝试加载此范围之外的切片,因此会抑制来自 Geoserver 的 400 或 404 响应。在这种情况下,我的数据在 EPSG:3857 中,因此我的范围也是如此。范围定义为 [minx, miny, maxx, maxy]

var tmp_lyr = new ol.layer.Tile({

        source: source_xyz,
        extent: [1826159,6142088, 1826967, 6142874],
        visible: is_visible,
        name: name,
        floor_num: floor,
        type: 'floor',
        zIndex: zIndex,
        crossOrigin: "anonymous"
    });

推荐阅读