import Map from '../src/ol/Map.js'; import Overlay from '../src/ol/Overlay.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 {toLonLat} from '../src/ol/proj.js'; import {toStringHDMS} from '../src/ol/coordinate.js'; /** * Elements that make up the popup. */ const container = document.getElementById('popup'); const content = document.getElementById('popup-content'); const closer = document.getElementById('popup-closer'); /** * Create an overlay to anchor the popup to the map. */ const overlay = new Overlay({ element: container, autoPan: { animation: { duration: 250, }, }, }); /** * Add a click handler to hide the popup. * @return {boolean} Don't follow the href. */ closer.onclick = function () { overlay.setPosition(undefined); closer.blur(); return false; }; const key = 'get_your_own_D6rA4zTHduk6KOKTXzGB'; const attributions = '© MapTiler ' + '© OpenStreetMap contributors'; /** * Create the map. */ const map = new Map({ layers: [ new TileLayer({ source: new XYZ({ attributions: attributions, url: 'https://api.maptiler.com/maps/streets/{z}/{x}/{y}.png?key=' + key, tileSize: 512, }), }), ], overlays: [overlay], target: 'map', view: new View({ center: [0, 0], zoom: 2, }), }); /** * Add a click handler to the map to render the popup. */ map.on('singleclick', function (evt) { const coordinate = evt.coordinate; const hdms = toStringHDMS(toLonLat(coordinate)); content.innerHTML = '
You clicked here:
' + hdms + '';
overlay.setPosition(coordinate);
});