diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2024-01-11 18:07:19 +0100 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2024-01-12 05:00:33 +0100 |
commit | 22972d7c274e7941b9e18b794dfdb73afef3492a (patch) | |
tree | 329fdc40b7ef3577373141ee1523255ba2bc6c60 /main.js | |
parent | fe21d9d8ead10d6541382b55a237b9a4e3e7eb91 (diff) |
Add a simple dialog to switch between ‘topowebb’ and ‘topowebb_nedtonad’.
Diffstat (limited to 'main.js')
-rw-r--r-- | main.js | 104 |
1 files changed, 70 insertions, 34 deletions
@@ -22,6 +22,10 @@ import TileLayer from 'ol/layer/Tile.js'; import WMTS from 'ol/source/WMTS.js'; import WMTSTileGrid from 'ol/tilegrid/WMTS.js'; +import Zoom from 'ol/control/Zoom.js'; +import Attribution from 'ol/control/Attribution.js'; +import Control from 'ol/control/Control.js'; + import proj4 from 'proj4'; import {get as getProjection} from 'ol/proj.js'; import {register as registerProjection} from 'ol/proj/proj4.js'; @@ -49,7 +53,56 @@ const projection = getProjection('EPSG:3006'); */ const extent = [110720, 6927136, 1159296, 7975712]; +/* XXX using the topowebbcache WMTS is fine for testing (as it + * doesn't require authentication) but not in production in a public + * instance as doing so would violate its current terms of use (as + * of January 2024 it's not CC0 open data). See + * + * https://www.lantmateriet.se/sv/om-lantmateriet/Rattsinformation/upphovsratt-och-publicering-av-lantmateriets-geografiska-information/ + * https://www.lantmateriet.se/sv/kartor/vara-karttjanster/min-karta/#anchor-2 + * https://help.locusmap.eu/topic/support-for-swedish-lantmateriets-min-karta-wms + * + * More precise background maps might be available in the future + * as open data, though: + * + * https://www.lantmateriet.se/sv/om-lantmateriet/press/nyheter/lantmateriets-arbete-mot-oppna-data-i-full-gang/ + */ +const baseMapSource = new WMTS({ + // XXX the 'layer' parameter should be passed in the options + // dictionary (like style and version), but there is no setLayer() + // method to switch from/to the toned down map + url: 'https://minkarta.lantmateriet.se/map/topowebbcache?layer=topowebb', + version: '1.0.0', + style: 'default', + matrixSet: '3006', + format: 'image/png', + tileGrid: new WMTSTileGrid({ + extent: extent, + // https://www.lantmateriet.se/globalassets/geodata/geodatatjanster/tb_twk_visning_cache_v1.1.0.pdf + tileSize: 256, + origin: [-1200000, 8500000], + resolutions: [4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, .5], + matrixIds: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + }), + projection: projection, + wrapX: false, + crossOrigin: 'anonymous', + attributions: '© <a href="https://lantmateriet.se" target="_blank">Lantmäteriet</a>', +}); + + const map = new Map({ + controls: [ + new Zoom({ + zoomInTipLabel: 'Zooma in', + zoomOutTipLabel: 'Zooma ut', + }), + new Attribution({ + collapsible: true, + collapsed: true, + tipLabel: 'Information', + }), + ], view: new View({ projection: projection, extent: extent, @@ -63,41 +116,24 @@ const map = new Map({ }), layers: [ new TileLayer({ - /* XXX using the topowebbcache WMTS is fine for testing (as it - * doesn't require authentication) but not in production in a public - * instance as doing so would violate its current terms of use (as - * of January 2024 it's not CC0 open data). See - * - * https://www.lantmateriet.se/sv/om-lantmateriet/Rattsinformation/upphovsratt-och-publicering-av-lantmateriets-geografiska-information/ - * https://www.lantmateriet.se/sv/kartor/vara-karttjanster/min-karta/#anchor-2 - * https://help.locusmap.eu/topic/support-for-swedish-lantmateriets-min-karta-wms - * - * More precise background maps might be available in the future - * as open data, though: - * - * https://www.lantmateriet.se/sv/om-lantmateriet/press/nyheter/lantmateriets-arbete-mot-oppna-data-i-full-gang/ - */ - source: new WMTS({ - url: 'https://minkarta.lantmateriet.se/map/topowebbcache', - version: '1.0.0', - layer: 'topowebb', - style: 'default', - matrixSet: '3006', - format: 'image/png', - tileGrid: new WMTSTileGrid({ - extent: extent, - // https://www.lantmateriet.se/globalassets/geodata/geodatatjanster/tb_twk_visning_cache_v1.1.0.pdf - tileSize: 256, - origin: [-1200000, 8500000], - resolutions: [4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, .5], - matrixIds: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], - }), - projection: projection, - wrapX: false, - crossOrigin: 'anonymous', - attributions: '© <a href="https://lantmateriet.se" target="_blank">Lantmäteriet</a>', - }), + source: baseMapSource }), ], target: document.getElementById('map'), }); + +(function() { + const element = document.getElementById('layer-selection-btn'); + map.addControl(new Control({ + element: element, + })); + element.onclick = function(event) { + document.getElementById('layer-selection-dialog').classList.toggle('map-dialog-hidden'); + element.classList.toggle('map-dialog-expanded'); + }; +})(); + +document.getElementById('layer-topowebb_nedtonad').onchange = function(event) { + const layer = event.target.checked ? 'topowebb_nedtonad' : 'topowebb'; + baseMapSource.setUrl('https://minkarta.lantmateriet.se/map/topowebbcache?LAYER=' + layer); +} |