From da16a303271d004ed525de37b51020ae05e6e87c Mon Sep 17 00:00:00 2001 From: Fritz Hoeing Date: Thu, 6 Jul 2023 15:44:24 +0200 Subject: [PATCH 1/2] fix: adds checks for missing properties --- .../AppContextUtil/Shogun2AppContextUtil.tsx | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/src/util/AppContextUtil/Shogun2AppContextUtil.tsx b/src/util/AppContextUtil/Shogun2AppContextUtil.tsx index 2d25fd4b..368e06ee 100644 --- a/src/util/AppContextUtil/Shogun2AppContextUtil.tsx +++ b/src/util/AppContextUtil/Shogun2AppContextUtil.tsx @@ -10,7 +10,7 @@ import OlTileGrid from 'ol/tilegrid/TileGrid'; import OlLayer from 'ol/layer/Base'; import OlLayerGroup from 'ol/layer/Group'; import {get as getProjection, transformExtent, transform} from 'ol/proj'; -import { getWidth } from 'ol/extent'; +import { getTopLeft, getWidth } from 'ol/extent'; import * as moment from 'moment'; @@ -186,23 +186,58 @@ class Shogun2AppContextUtil extends BaseAppContextUtil implements AppContextUtil legendUrl } = layer.appearance; - const wmtsTileGrid = new OlTileGridWMTS({ - origin: layer.source.tileGrid.origin, - resolutions: layer.source.tileGrid.resolutions, - matrixIds: layer.source.tileGrid.matrixIds - }); + let projection; + let wmtsTileGrid; + let style; + + if (layer.source.projection) { + projection = layer.source.projection; + } else { + projection = getProjection('EPSG:3857'); + }; + + if (layer.source.tileGrid.origin && layer.source.tileGrid.resolutions && layer.source.tileGrid.matrixIds) { + wmtsTileGrid = new OlTileGridWMTS({ + origin: layer.source.tileGrid.origin, + resolutions: layer.source.tileGrid.resolutions, + matrixIds: layer.source.tileGrid.matrixIds + }); + } else { + + const projectionExtent = projection.getExtent(); + const size = getWidth(projectionExtent) / 256; + const resolutions = new Array(19); + const matrixIds = new Array(19); + for (let z = 0; z < 19; ++z) { + resolutions[z] = size / Math.pow(2, z); + matrixIds[z] = z; + } + + wmtsTileGrid = new OlTileGridWMTS({ + origin: getTopLeft(projectionExtent), + resolutions: resolutions, + matrixIds: matrixIds, + }); + }; + + if (layer.source.style) { + style = layer.source.style; + } else { + style = 'default'; + } const wmtsSource = new OlSourceWMTS({ - projection: layer.source.projection, urls: [ layer.source.url ], layer: layer.source.layerNames, format: layer.source.format, - matrixSet: layer.source.tileMatrixSet, attributions: [attribution], + matrixSet: layer.source.matrixSet, + projection: projection, tileGrid: wmtsTileGrid, - style: layer.source.style, + style: style, + wrapX: true, requestEncoding: layer.source.requestEncoding }); From 5e7e587b7ba3f4ee23da169e0137d82846a8ddbe Mon Sep 17 00:00:00 2001 From: Fritz Hoeing Date: Thu, 6 Jul 2023 15:50:48 +0200 Subject: [PATCH 2/2] fix: linting --- src/util/AppContextUtil/Shogun2AppContextUtil.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/AppContextUtil/Shogun2AppContextUtil.tsx b/src/util/AppContextUtil/Shogun2AppContextUtil.tsx index 368e06ee..69300f8e 100644 --- a/src/util/AppContextUtil/Shogun2AppContextUtil.tsx +++ b/src/util/AppContextUtil/Shogun2AppContextUtil.tsx @@ -196,7 +196,9 @@ class Shogun2AppContextUtil extends BaseAppContextUtil implements AppContextUtil projection = getProjection('EPSG:3857'); }; - if (layer.source.tileGrid.origin && layer.source.tileGrid.resolutions && layer.source.tileGrid.matrixIds) { + if (layer.source.tileGrid.origin && + layer.source.tileGrid.resolutions && + layer.source.tileGrid.matrixIds) { wmtsTileGrid = new OlTileGridWMTS({ origin: layer.source.tileGrid.origin, resolutions: layer.source.tileGrid.resolutions,