'use strict'; /** * @namespace UI */ const UI = {}; const centerIcon = ` `; const siteIcon = ` `; /** * Add a control to center the map * @param {Map} map * @param {LatLngExpression} centerCoords * @param {number} zoom Zoom level */ UI.addCenterMapControl = function (map, centerCoords, zoom) { L.Control.CenterControl = L.Control.extend({ options: { position: 'topleft' }, onAdd: function (map) { let controlDiv = L.DomUtil.create('div', 'leaflet-draw-toolbar leaflet-bar'); L.DomEvent .addListener(controlDiv, 'click', L.DomEvent.stopPropagation) .addListener(controlDiv, 'click', L.DomEvent.preventDefault) .addListener(controlDiv, 'click', function () { map.setView(centerCoords, zoom, {animate: true}); } ); let controlUI = L.DomUtil.create('a', 'leaflet-draw-edit-remove', controlDiv); controlUI.title = 'Centra la mappa'; controlUI.href = '#'; controlUI.innerHTML = centerIcon; return controlDiv; } }); let centerCtr = new L.Control.CenterControl(); map.addControl(centerCtr); } /** * * @param {Map} map * @param {LatLng} coordinates * @param {string} popupContent The site's name */ UI.addSitesControl = function (map, coordinates, popupContent, initZoom = 15) { const popUpCoords = L.latLng(coordinates.lat + 0.0001, coordinates.lng); L.Control.SiteControl = L.Control.extend({ options: { position: 'topright' }, onAdd: function (map) { let controlDiv = L.DomUtil.create('div', 'leaflet-draw-toolbar leaflet-bar'); L.DomEvent .addListener(controlDiv, 'click', L.DomEvent.stopPropagation) .addListener(controlDiv, 'click', L.DomEvent.preventDefault) .addListener(controlDiv, 'click', function () { map.setZoom(initZoom); map.setView( coordinates, 19, {animate: true, duration: 1, easeLinearity: 0.25} ); L.popup() .setLatLng(popUpCoords) .setContent(popupContent) .openOn(map); }); let controlUI = L.DomUtil.create('a', 'leaflet-draw-edit-remove site-control', controlDiv); controlUI.title = `Vai a ${popupContent}`; controlUI.href = '#'; controlUI.innerHTML = siteIcon; return controlDiv; } }); let siteCtr = new L.Control.SiteControl(); map.addControl(siteCtr); } export default UI;