diff --git a/examples/export-map.js b/examples/export-map.js index 087f64d139..a7f0dd1aa5 100644 --- a/examples/export-map.js +++ b/examples/export-map.js @@ -1,8 +1,12 @@ import GeoJSON from '../src/ol/format/GeoJSON.js'; import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; +import { + Heatmap as HeatmapLayer, + Tile as TileLayer, + Vector as VectorLayer, +} from '../src/ol/layer.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js'; -import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; const map = new Map({ layers: [ @@ -16,6 +20,18 @@ const map = new Map({ }), opacity: 0.5, }), + new HeatmapLayer({ + source: new VectorSource({ + url: 'data/geojson/world-cities.geojson', + format: new GeoJSON(), + }), + weight: function (feature) { + return feature.get('population') / 1e7; + }, + radius: 15, + blur: 15, + opacity: 0.5, + }), ], target: 'map', view: new View({ @@ -32,17 +48,30 @@ document.getElementById('export-png').addEventListener('click', function () { mapCanvas.height = size[1]; const mapContext = mapCanvas.getContext('2d'); Array.prototype.forEach.call( - document.querySelectorAll('.ol-layer canvas'), + map.getViewport().querySelectorAll('.ol-layer canvas, canvas.ol-layer'), function (canvas) { if (canvas.width > 0) { - const opacity = canvas.parentNode.style.opacity; + const opacity = + canvas.parentNode.style.opacity || canvas.style.opacity; mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity); + let matrix; const transform = canvas.style.transform; - // Get the transform parameters from the style's transform matrix - const matrix = transform - .match(/^matrix\(([^\(]*)\)$/)[1] - .split(',') - .map(Number); + if (transform) { + // Get the transform parameters from the style's transform matrix + matrix = transform + .match(/^matrix\(([^\(]*)\)$/)[1] + .split(',') + .map(Number); + } else { + matrix = [ + parseFloat(canvas.style.width) / canvas.width, + 0, + 0, + parseFloat(canvas.style.height) / canvas.height, + 0, + 0, + ]; + } // Apply the transform to the export map context CanvasRenderingContext2D.prototype.setTransform.apply( mapContext,