Prepare multi JavaScript modules
[gpl/argeo-suite.git] / js / src / geo / OpenLayerTileSources.js
diff --git a/js/src/geo/OpenLayerTileSources.js b/js/src/geo/OpenLayerTileSources.js
new file mode 100644 (file)
index 0000000..3425384
--- /dev/null
@@ -0,0 +1,54 @@
+
+import WMTS from 'ol/source/WMTS.js';
+import WMTSTileGrid from 'ol/tilegrid/WMTS';
+import { getTopLeft } from 'ol/extent';
+import { getWidth } from 'ol/extent';
+import { get as getProjection } from 'ol/proj';
+
+export class SentinelCloudless extends WMTS {
+       static source_s2CL2019;
+       static EPSG4326 = getProjection('EPSG:4326');
+
+       static resolutions;
+       static matrixIds;
+
+       static {
+               let min_zoom = 6;
+               let max_zoom = 17;
+               let zoomOffset = 1;
+
+               // from https://s2maps.eu/
+               let size = getWidth(this.EPSG4326.getExtent()) / 512;
+               this.resolutions = new Array(max_zoom + zoomOffset);
+               this.matrixIds = new Array(max_zoom + zoomOffset);
+               for (let z = min_zoom; z <= max_zoom; ++z) {
+                       // generate resolutions and matrixIds arrays for this WMTS
+                       this.resolutions[z] = size / Math.pow(2, z);
+                       this.matrixIds[z] = z;
+               }
+       }
+       
+       constructor() {
+               super({
+                       urls: [
+                               "//a.s2maps-tiles.eu/wmts/",
+                               "//b.s2maps-tiles.eu/wmts/",
+                               "//c.s2maps-tiles.eu/wmts/",
+                               "//d.s2maps-tiles.eu/wmts/",
+                               "//e.s2maps-tiles.eu/wmts/"
+                       ],
+                       layer: 's2cloudless-2021',
+                       matrixSet: 'WGS84',
+                       format: 'image/jpeg',
+                       projection: SentinelCloudless.EPSG4326,
+                       tileGrid: new WMTSTileGrid({
+                               origin: getTopLeft(SentinelCloudless.EPSG4326.getExtent()),
+                               resolutions: SentinelCloudless.resolutions,
+                               matrixIds: SentinelCloudless.matrixIds,
+                       }),
+                       style: 'default',
+                       transition: 0,
+                       wrapX: true
+               });
+       }
+}
\ No newline at end of file