原文链接及内容
 

演示在连续更改尺寸时平稳地重新加载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>
   |