From c3c8c4fa73db94c15ab905bf4ad711dff495c649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 6 Nov 2015 16:53:03 +0100 Subject: [PATCH] Add an wmts-dimensions example --- examples/wmts-dimensions.html | 18 ++++++++ examples/wmts-dimensions.js | 85 +++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 examples/wmts-dimensions.html create mode 100644 examples/wmts-dimensions.js diff --git a/examples/wmts-dimensions.html b/examples/wmts-dimensions.html new file mode 100644 index 0000000000..abe64bc378 --- /dev/null +++ b/examples/wmts-dimensions.html @@ -0,0 +1,18 @@ +--- +layout: example.html +title: Smooth WMTS tile transition example +shortdesc: Example of smooth tile transitions when changing the dimension of a WMTS layer. +docs: > + Demonstrates smooth reloading of layers when changing a dimension continously. The demonstration layer is a global sea-level computation (flooding computation from SCALGO, underlying data from CGIAR-CSI SRTM) where cells that are flooded if the sea-level rises to more than x m are colored blue. The user selects the sea-level dimension using a slider. +tags: "wmts, parameter, transition" +--- +
+
+
+
+
+ Sea-level: + + +
+
diff --git a/examples/wmts-dimensions.js b/examples/wmts-dimensions.js new file mode 100644 index 0000000000..042f19a469 --- /dev/null +++ b/examples/wmts-dimensions.js @@ -0,0 +1,85 @@ +goog.require('ol.Attribution'); +goog.require('ol.Map'); +goog.require('ol.View'); +goog.require('ol.control'); +goog.require('ol.control.Attribution'); +goog.require('ol.control.Zoom'); +goog.require('ol.extent'); +goog.require('ol.layer.Tile'); +goog.require('ol.proj'); +goog.require('ol.source.OSM'); +goog.require('ol.source.WMTS'); +goog.require('ol.tilegrid.WMTS'); + + +// create the WMTS tile grid in the google projection +var projection = ol.proj.get('EPSG:3857'); +var tileSizePixels = 256; +var tileSizeMtrs = ol.extent.getWidth(projection.getExtent()) / tileSizePixels; +var matrixIds = []; +var resolutions = []; +for (var i = 0; i <= 14; i++) { + matrixIds[i] = i; + resolutions[i] = tileSizeMtrs / Math.pow(2, i); +} +var tileGrid = new ol.tilegrid.WMTS({ + origin: ol.extent.getTopLeft(projection.getExtent()), + resolutions: resolutions, + matrixIds: matrixIds +}); + +var scalgoToken = 'CC5BF28A7D96B320C7DFBFD1236B5BEB'; + +var wmtsSource = new ol.source.WMTS({ + url: 'http://ts2.scalgo.com/global/wmts?token=' + scalgoToken, + layer: 'hydrosheds:sea-levels', + format: 'image/png', + matrixSet: 'EPSG:3857', + attributions: [ + new ol.Attribution({ + html: 'SCALGO' + }), + new ol.Attribution({ + html: 'CGIAR-CSI SRTM' + }) + ], + tileGrid: tileGrid, + style: 'default', + dimensions: { + 'threshold': 100 + } +}); + +var map = new ol.Map({ + target: 'map', + view: new ol.View({ + projection: projection, + center: [-3052589, 3541786], + zoom: 3 + }), + controls: [ + new ol.control.Zoom(), + new ol.control.Attribution() + ], + layers: [ + new ol.layer.Tile({ + source: new ol.source.OSM() + }), + new ol.layer.Tile({ + opacity: 0.5, + source: wmtsSource + }) + ] +}); + +var updateSourceDimension = function(source, sliderVal) { + source.updateDimensions({'threshold': sliderVal}); + document.getElementById('theinfo').innerHTML = sliderVal + ' meters.'; +}; + +updateSourceDimension(wmtsSource, 10); + +document.getElementById('slider').addEventListener('input', function() { + updateSourceDimension(wmtsSource, this.value); +});