'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;