1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
var defaultZoom = 10;
var defaultLat = 45;
var defaultLng = 5;
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
//convert URL parameter to a variable and a number
var urlZoom = +getQueryVariable("zoom");
var urlLat = +getQueryVariable("lat");
var urlLng = +getQueryVariable("lng");
//check if URL parameters are set, if not, fallback to default
if (urlZoom == 0) {
myZoom = defaultZoom;
} else {
myZoom = urlZoom;
}
if (urlLat == 0 ) {
myLat = defaultLat;
} else {
myLat = urlLat;
}
if (urlLng == 0) {
myLng = defaultLng;
} else {
myLng = urlLng;
}
const map = new maplibregl.Map({
container: 'map', // container's id or the HTML element in which MapLibre GL JS will render the map
style: {
version: 8,
sources: {},
layers:[]
},
center: [myLng, myLat], // starting position [lng, lat]
zoom: myZoom, // starting zoom
pitch: 0,
bearing: 0,
maxPitch: 80,
maxZoom: 21
});
map.on('moveend', (e) => {
var new_url = new URLSearchParams();
var myZoom = new_url.get('zoom') || map.getZoom().toFixed(0);
var myLat = new_url.get('lat') || map.getCenter().lat.toFixed(4);
var myLng = new_url.get('lng') || map.getCenter().lng.toFixed(4);
var params = "zoom="+ myZoom +'&lng='+ myLng + '&lat=' + myLat;
window.history.pushState({}, '', '?'+params)
})
map.on('zoomend', (e) => {
var new_url = new URLSearchParams();
var myZoom = new_url.get('zoom') || map.getZoom().toFixed(0);
var myLat = new_url.get('lat') || map.getCenter().lat.toFixed(4);
var myLng = new_url.get('lng') || map.getCenter().lng.toFixed(4);
}) |
Partager