原文链接及内容

演示在连续更改尺寸时平稳地重新加载WMTS图层。演示所用图层是全球海平面计算(来自SCALGO的洪水计算,来自CGIAR-CSI SRTM的基础(源)数据),其中,调整滑块控件的值,表示如果海平面上升到超过x
米时,而被淹没的单元以蓝色显示。
main.js
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| import Map from 'ol/Map.js'; import OSM from 'ol/source/OSM.js'; import TileLayer from 'ol/layer/Tile.js'; import View from 'ol/View.js'; import WMTS from 'ol/source/WMTS.js'; import WMTSTileGrid from 'ol/tilegrid/WMTS.js'; import {get as getProjection} from 'ol/proj.js'; import {getTopLeft, getWidth} from 'ol/extent.js';
const projection = getProjection('EPSG:3857'); const tileSizePixels = 256; const tileSizeMtrs = getWidth(projection.getExtent()) / tileSizePixels; const matrixIds = []; const resolutions = []; for (let i = 0; i <= 14; i++) { matrixIds[i] = i; resolutions[i] = tileSizeMtrs / Math.pow(2, i); } const tileGrid = new WMTSTileGrid({ origin: getTopLeft(projection.getExtent()), resolutions: resolutions, matrixIds: matrixIds, });
const scalgoToken = 'CC5BF28A7D96B320C7DFBFD1236B5BEB';
const wmtsSource = new WMTS({ url: 'https://ts2.scalgo.com/olpatch/wmts?token=' + scalgoToken, layer: 'SRTM_4_1:SRTM_4_1_flooded_sealevels', format: 'image/png', matrixSet: 'EPSG:3857', attributions: [ '<a href="https://scalgo.com" target="_blank">SCALGO</a>', '<a href="https://cgiarcsi.community/data/' + 'srtm-90m-digital-elevation-database-v4-1"' + ' target="_blank">CGIAR-CSI SRTM</a>', ], tileGrid: tileGrid, style: 'default', dimensions: { 'threshold': 100, }, });
const map = new Map({ target: 'map', view: new View({ projection: projection, center: [-9871995, 3566245], zoom: 6, }), layers: [ new TileLayer({ source: new OSM(), }), new TileLayer({ opacity: 0.5, source: wmtsSource, }), ], });
const slider = document.getElementById('slider'); const updateSourceDimension = function () { wmtsSource.updateDimensions({'threshold': slider.value}); document.getElementById('theinfo').innerHTML = slider.value + ' meters'; }; slider.addEventListener('input', updateSourceDimension); updateSourceDimension();
|
界面布局文件index.html
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>WMTS Tile Transitions</title> <link rel="stylesheet" href="node_modules/ol/ol.css"> <style> .map { width: 100%; height: 400px; } </style> </head> <body> <div id="map" class="map"></div> <label> Sea-level <input id="slider" type="range" value="10" max="100" min="-1"> </label> <span id="theinfo"></span> <script src="https://cdn.jsdelivr.net/npm/elm-pep@1.0.6/dist/elm-pep.js"></script> <script type="module" src="main.js"></script> </body> </html>
|