// NOCOMPILE // this example uses FileSaver.js for which we don't have an externs file. import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; import {defaults as defaultControls} from '../src/ol/control.js'; import GeoJSON from '../src/ol/format/GeoJSON.js'; import {Tile as TileLayer, Vector as VectorLayer} from '../src/ol/layer.js'; import {OSM, Vector as VectorSource} from '../src/ol/source.js'; const map = new Map({ layers: [ new TileLayer({ source: new OSM() }), new VectorLayer({ source: new VectorSource({ url: 'data/geojson/countries.geojson', format: new GeoJSON() }) }) ], target: 'map', controls: defaultControls({ attributionOptions: { collapsible: false } }), view: new View({ center: [0, 0], zoom: 2 }) }); document.getElementById('export-png').addEventListener('click', function() { map.once('postcompose', function(event) { const canvas = event.context.canvas; if (navigator.msSaveBlob) { navigator.msSaveBlob(canvas.msToBlob(), 'map.png'); } else { canvas.toBlob(function(blob) { saveAs(blob, 'map.png'); }); } }); map.renderSync(); });