开发者问题收集

在 OpenLayers 6.9.0 中我使用获取 WMTSCapabilities 但它不起作用

2021-11-12
451

我使用fetch wmtscapabilities,但我收到此消息:未定义的(在承诺中):无法读取未定义的属性(读取'layer') 在function.rl.source.wmts.optionsfromcapabilities(ol.js:2)

这是我使用的代码:

575237443
2个回答

这似乎是在 OpenLayers 源代码 中的 optionsFromCapabilities 行失败:

export function optionsFromCapabilities(wmtsCap, config) {
  const layers = wmtsCap['Contents']['Layer'];

检查您是否获取了有效的 WMTSCapabilities.xml ,包括 Contents 标签 它应该看起来类似于 此 xml

MoonE
2021-11-14

谢谢,我现在用另一种方法让它工作了,通过像这样编程原点、扩展和解析:

const size = ol.extent.getWidth(projectionExtent) / 256;
// Er zijn 20 (0 tot 19) zoomniveaus beschikbaar van de WMTS-service voor de BGT-Achtergrondkaart:
let matrixIds = new Array(20);
for (let z = 0; z < 10; ++z) {
    matrixIds[z] = 'EPSG:3857:0' + z;
}
for (let z = 10; z < 20; ++z) {
    matrixIds[z] = 'EPSG:3857:' + z;
}
const bgRaster = new ol.layer.Tile({
  extent: projectionExtent,
  source: new ol.source.WMTS({
 attributions: 'Kaartgegevens: &copy; <a href="https://www.kadaster.nl">Kadaster</a>',
                url: 'https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0?',
                layer: 'standaard',
                matrixSet: 'EPSG:3857',
                format: 'image/png',
                projection: projection,
                tileGrid: new ol.tilegrid.WMTS({
                    origin: ol.extent.getTopLeft(projectionExtent),
  //                  origin: -285401.92 + "," + 903402.0,
                    resolutions: resolutions,
                    matrixIds: matrixIds
                }),
                style: 'default',
                wrapX: false
  }),
      title: 'Kadaster',
      visible: true
});
Boudewijn van Os
2021-11-16