import Map from '../src/ol/Map.js'; import OSM from '../src/ol/source/OSM.js'; import TileLayer from '../src/ol/layer/Tile.js'; import View from '../src/ol/View.js'; import XYZ from '../src/ol/source/XYZ.js'; import {getRenderPixel} from '../src/ol/render.js'; const osm = new TileLayer({ source: new OSM(), }); const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB'; const attributions = '© MapTiler ' + '© OpenStreetMap contributors'; const aerial = new TileLayer({ source: new XYZ({ attributions: attributions, url: 'https://api.maptiler.com/tiles/satellite/{z}/{x}/{y}.jpg?key=' + key, maxZoom: 20, }), }); const map = new Map({ layers: [osm, aerial], target: 'map', view: new View({ center: [0, 0], zoom: 2, }), }); const swipe = document.getElementById('swipe'); aerial.on('prerender', function (event) { const ctx = event.context; const mapSize = map.getSize(); const width = mapSize[0] * (swipe.value / 100); const tl = getRenderPixel(event, [width, 0]); const tr = getRenderPixel(event, [mapSize[0], 0]); const bl = getRenderPixel(event, [width, mapSize[1]]); const br = getRenderPixel(event, mapSize); ctx.save(); ctx.beginPath(); ctx.moveTo(tl[0], tl[1]); ctx.lineTo(bl[0], bl[1]); ctx.lineTo(br[0], br[1]); ctx.lineTo(tr[0], tr[1]); ctx.closePath(); ctx.clip(); }); aerial.on('postrender', function (event) { const ctx = event.context; ctx.restore(); }); swipe.addEventListener( 'input', function () { map.render(); }, false );