document.getElementById('body').onload = function(){ /* Fonction de recentrage des svgOverlay dont le zéro est en haut à gauche alors qu'on le veut au milieu */ // -------------------------------------------------------------------------- function centrerSVG(latitudeLongitudeCentre,extension) { coinHautGaucheX = latitudeLongitudeCentre[0]+extension[0]/2 coinHautGaucheY = latitudeLongitudeCentre[1]-extension[1]/2 coinHautGauche = [coinHautGaucheX,coinHautGaucheY]; coinBasDroiteX = latitudeLongitudeCentre[0]-extension[0]/2; coinBasDroiteY = latitudeLongitudeCentre[1]+extension[1]/2; coinBasDroite = [ coinBasDroiteX, coinBasDroiteY]; return [[coinHautGaucheX,coinHautGaucheY],[coinBasDroiteX,coinBasDroiteY]]; } // -------------------------------------------------------------------------- // Déclaration des variables // -------------------------------------------------------------------------- var centrePacifiqueSud = [-24.3763, -128.3184]; var extensionPacifiqueSud = [50,50]; var centrePacifiqueNord = [35, -180]; var extensionPacifiqueNord = [100,100]; var centreZero = [0, 0]; var extensionZero = [90, 90]; // La carte centrée et zoomée // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- var map = L.map('map', { center: [-7, -100], zoom: 2 });//.setView([0, 0], 2); // Déclaration des fonds var baselayers = { osm:L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© OpenStreetMap' }), stamen:L.tileLayer('https://stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg', { maxZoom: 19, attribution: 'Map tiles by Stamen Design, under CC BY 4.0. Data by OpenStreetMap, under CC BY SA.' }) }; // Ajout du fond par défaut baselayers.stamen.addTo(map); // Ajout du menu de changement de fonds L.control.layers(baselayers, null, {position: 'topright', collapsed : false }).addTo(map); // -------------------------------------------------------------------------- // Définition des marqueurs var marker1 = L.marker([-42.5,69]).addTo(map) .bindPopup("La gyre de l'océan indien.") .openPopup(); // -------------------------------------------------------------------------- // Définition des cercles var rayon = 3000000 // Un cercle orange, remplis vert transparent ------------------------------- var cercle1 = L.circle([-45, -130], rayon, { color: 'black', fill: 'true', fillColor: '#101010', fillOpacity: 0.2, }).addTo(map) .bindTooltip("Gyre du Pacifique Sud", { permanent: true, direction: 'left', offset: [0,0] }); // -------------------------------------------------------------------------- // Définition des polygones // Un polygone /* var polygon1 = L.polygon([ [61, -95], [61, 4.3], [7, 4.3], [7, -95] ],{color: "green"}).addTo(map); */ // -------------------------------------------------------------------------- // Définition des polylines var latlngs1 = [ [0, -80], [0, 80] ]; var polyline = L.polyline(latlngs1, {color: 'green'}).addTo(map) .bindTooltip("Équateur : latitude 0°", { permanent: true, direction: 'right', offset: [60,0] }); // -------------------------------------------------------------------------- // Définition des overlays svg // La gyre de l'océan Indien var coin20_0 = L.latLng(0, 23); var coin0_20 = L.latLng(-65, 115); var bounds1 = L.latLngBounds(coin20_0, coin0_20); // Définition des calques (overlay) var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); svgElement.setAttribute('viewBox', "0 0 100 100"); svgElement.innerHTML = ''; //svgElementBounds = centrerSVG(centreZero,extensionZero); //svgElementBounds = [map.layerPointToLatLng([0,0]),map.layerPointToLatLng([30,30])]; var forme = L.svgOverlay(svgElement, bounds1); forme.addTo(map); // La gyre de l'Atlantique Sud var coin20_0 = L.latLng(0, -65); var coin0_20 = L.latLng(-70, 18); var bounds1 = L.latLngBounds(coin20_0, coin0_20); // Définition des calques (overlay) var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svgElement.setAttribute('xmlns', "http://www.w3.org/2000/svg"); svgElement.setAttribute('viewBox', "0 0 100 100"); svgElement.innerHTML = '\ '; //svgElementBounds = centrerSVG(centreZero,extensionZero); //svgElementBounds = [map.layerPointToLatLng([0,0]),map.layerPointToLatLng([30,30])]; var forme = L.svgOverlay(svgElement, bounds1); forme.addTo(map); // -------------------------------------------------------------------------- // Définition des images overlay var imageUrl = 'images/North_Pacific_Gyre.png'; var errorOverlayUrl = 'https://cdn-icons-png.flaticon.com/512/110/110686.png'; var altText = 'Wikipedia : https://commons.wikimedia.org/wiki/File:North_Pacific_Gyre.png'; var latLngBounds = L.latLngBounds([[66.6, -254.5], [-15.5, -105.2]]); var imageOverlay = L.imageOverlay(imageUrl, latLngBounds, { opacity: 1, errorOverlayUrl: errorOverlayUrl, alt: altText, interactive: true }).addTo(map) .bindTooltip("Gyre du Pacifique Nord", { permanent: true, direction: 'right', offset: [0,0] }); // ------------------------------------------------------------------------- // Définition des vidéos overlay // Attention, pour remplir latLngBound, il faut mettre à fill la propriété // css object-fit de la balise video. var videoUrls = [ 'images/GyreAtlantiqueNordPetitPetit.mp4' ]; var errorOverlayUrl = 'https://cdn-icons-png.flaticon.com/512/110/110686.png'; var latLngBounds = L.latLngBounds([[57, -100], [3.5, 13]]); var videoOverlay = L.videoOverlay(videoUrls, latLngBounds, { opacity: 0.6, errorOverlayUrl: errorOverlayUrl, interactive: true, autoplay: true, muted: true, playsInline: true, keepAspectRatio: false }).addTo(map); // -------------------------------------------------------------------------- // Définition de la légende function getColor(d) { return d === 'Océaniques' ? "#5bc6da" : d === 'Terrestres' ? "#e5c7a9" : d === 'Polaires' ? "#dadcd2" : d === 'Désertiques' ? "#e2ddcf" : "#cd9474"; } var legend = L.control({position: 'bottomleft'}); legend.onAdd = function (map) { var div = L.DomUtil.create('div', 'info legend'); labels = ['Surfaces'], categories = ['Océaniques','Terrestres','Polaires','Désertiques','Autres']; for (var i = 0; i < categories.length; i++) { div.innerHTML += labels.push(' '+categories[i]); } div.innerHTML = labels.join('
'); return div; }; legend.addTo(map); // -------------------------------------------------------------------------- // Définition d'un grand cercle avec le plugin Leaflet.greatCircle permettant // des grand cercles correctement définis dans la projection de Mercator. var grandcercle = new L.greatCircle([-30, 110], {radius: 6000000}); grandcercle.addTo(map); onMapClick = function(e){ popup = L.popup() popup.setLatLng(e.latlng) lepoint = map.latLngToLayerPoint(e.latlng); popup.setContent("Position : "+e.latlng+" et "+lepoint) popup.openOn(map); //console.log("Coordinate: #{e.latlng}") } map.on('click', onMapClick) };