// URL de mapbox // var mapboxURL = 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoiY2hhcGVhdS1kZS1wYWlsbGUiLCJhIjoiY2s2ejMxaG81MGwzZzNlcGlmOXFzaHdrMyJ9.vRz99d-qgziEsY2d42JlAA'; // accès à MapBox avec mon Token //var accessToken = 'pk.eyJ1IjoiY2hhcGVhdS1kZS1wYWlsbGUiLCJhIjoiY2s2ejMxaG81MGwzZzNlcGlmOXFzaHdrMyJ9.vRz99d-qgziEsY2d42JlAA'; //mapboxgl.accessToken = accessToken; var localites = { "Etalle": {"lat" : 49.6743667, "lon" : 5.60173333}, "Villers-sur-Semois" : {"lat" : 49.69971667, "lon" : 5.56088333}, "Sainte-Marie-sur-Semois" : {"lat" : 49.67225, "lon" : 5.5636333}, "Mortinsart" : {"lat" : 49.706083333, "lon" : 5.58636666}, "Fratin" : {"lat" : 49.6589, "lon" : 5.57318333}, "Huombois" : {"lat" : 49.63698333, "lon" : 5.55543333}, "Croix-Rouge" : {"lat" : 49.62575, "lon" : 5.5497}, "Chantemelle" : {"lat" : 49.65341667, "lon" : 5.65151667}, "Vance" : {"lat" : 49.66988333, "lon" : 5.66796667}, "Villers-Tortru" : {"lat" : 49.67603333,"lon" : 5.68456667}, "Buzenol" : {"lat" : 49.64665, "lon" : 5.59538333}, "Sivry" : {"lat" : 49.66886667, "lon" : 5.62593333}, "Landin" : {"lat" : 49.67503333, "lon" : 5.54751667} }; var points_interet = { "remove" : {"titre" : "Masquer les thèmes en cours"}, "church" : {"titre" : "Edifices religieux"}, "fountain" : {"titre" : "Petit patrimoine de l\'eau"}, "cross" : {"titre" : "Petit patrimoine religieux"}, "history" : {"titre" : "Sites historiques"}, "building" : {"titre" : "Bâtiments remarquables"}, "tree" : {"titre" : "Arbres et haies remarquables"}, "mardelle" : {"titre" : "Crons et mardelles : patrimoine naturel de Gaume"}, "source" : {"titre" : "Sources"}, "pond" : {"titre" : "Etangs"}, "funeral" : {"titre" : "Pierres funéraires et monuments aux morts"}, "celebrity" : {"titre" : "Maisons de personnalités locales"}, "popular" : {"titre" : "Petit patrimoine populaire insolite"}, "industry" : {"titre" : "Anciennes industries, commerces, administrations"}, "train" : {"titre" : "Chemin de fer"}, "tram" : {"titre" : "Ligne vicinale Etalle-Villers-devant-Orval"}, "oldbar" : {"titre" : "Anciens cafés, restaurants et épiceries"} }; // Définition des variables globales var coord_GoTo=[]; var marker_GoTo=L.marker([49.6743,5.60173]); // par défaut : marqueur sur Etalle var macarte; var markersArray = []; // recevra systématiquement tous les marqueurs sauf ceux des overlays var explication; var piste; // parcours considéré var troncon; // tronçon du parcours considéré, initialisé à 0 var tous_parcours = []; // polylines de tous les parcours var route_tout; // polyline du parcours complet var route = []; var identificateur_choisi; var parcours_choisi; var longueur = 0; // longueur de la portion de parcours // Dossier des bases de données d'icones et de pictogrammes var iconBase = 'Icones/'; var picto='Pictogrammes/'; var morceaux; // fonction qui analyse le parcours par morceaux var markersArray = []; // recevra systématiquement tous les marqueurs // Définition des fonds de carte var OpenStreetMap = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'données © OpenStreetMap/ODbL - rendu OSM Belgium', minZoom: 12, maxZoom: 21 }); var Ortho=L.tileLayer.wms("http://geoservices.wallonie.be/arcgis/services/IMAGERIE/ORTHO_2018/MapServer/WMSServer?", { layers: '0', attribution: 'Géoportail de la Région wallonne', minZoom: 12, maxZoom:21 }); var customOptions = {'maxWidth': '600', 'maxHeight' : '300'}; function clearMarkers() { // fonction qui enlève les marqueurs en cours for (var i = 0; i < markersArray.length; i++ ) { //markersArray[i].setMap(null); macarte.removeLayer(markersArray[i]); } markersArray.length = 0; } function PrendreParcours() { // Saisir le champ correspondant au parcours choisi var selectElmt = document.getElementById("trajetChoisi"); piste = selectElmt.options[selectElmt.selectedIndex].value; CacherControle(command,macarte); // cacher le formulaire de choix du parcours longueur = 0; // réinitialiser la longueur du parcours for (voie in Parcours) { macarte.removeLayer(tous_parcours[voie]); // cacher les tracés de tous les parcours } complet (); // tracer le parcours complet return true; }; function terminerParcours() { clearMarkers (); // Quand on termine le parcours : effacer les marqueurs macarte.removeLayer(route_tout); // Cacher le parcours complet for (var i=0;i -1; if (!IE) { window.addEventListener("orientationchange", function () { setTimeout('change_map()',400); }); }; function initMap() { // Créer l'objet "macarte" et l'insérer dans l'élément HTML qui a l'ID "map" macarte = new L.map('map', { center : [localites["Etalle"].lat,localites["Etalle"].lon], zoom : 12, layers : [Ortho], // par défaut }); //Création des contrôles. // Ajout d'un contrôle pour le plein écran macarte.addControl(new L.Control.Fullscreen({ title: { 'false': 'Voir en mode plein écran', 'true': 'Sortir du mode plein écran' } })); // Affichage de la position de la souris macarte.addControl( new L.Control.MousePosition ()); //Contrôles pour les fonds de cartes. var baseMaps = { "Photo aérienne" : Ortho, "OpenStreetMap": OpenStreetMap }; //Gestion du panneau de contrôle des parcours command = L.control({position : 'bottomright'}); command.onAdd = function (map) { Tous_les_Parcours(); // Afficher l'ensemble des parcours var div = L.DomUtil.create('div','command_parcours'); div.innerHTML = ' Choisissez un parcours de promenade virtuelle
'; var serie_de_parcours = ''; for (voie in Parcours) { serie_de_parcours += ''; }; div.innerHTML += ''; L.DomEvent.disableClickPropagation(div); // empêcher les actions de la souris sur la carte quand on est sur le div des explications (zoom avec la molette, ...) L.DomEvent.disableScrollPropagation(div); return div; }; var polylineOptions_tout = { color: 'violet', weight: 2, opacity: 1.0 }; var polylineOptions_complet = { color: 'blue', weight: 4, opacity: 0.5 }; var polylineOptions_focus = { color: 'red', weight: 8, opacity: 0.9 }; // Traçage de tous les parcours Tous_les_Parcours = function () { for (voie in Parcours) { var track = []; var k=0; for (var i=0;i' + fichier_livret +''; ajout += ') accompagné de son '; ajout += '' + 'mode d\'emploi' +''; ajout += ' et d\'une carte ('; ajout += '' + fichier_carte +''; ajout += ').' } div.innerHTML = descriptif + '
' + '' + ' ' + '' + '

' + ' Il est possible de récupérer le fichier GPS : ' + '' + fichier_gpx +'' + ajout; L.DomEvent.disableClickPropagation(div); // empêcher les actions de la souris sur la carte quand on est sur le div des explications (zoom avec la molette, ...) L.DomEvent.disableScrollPropagation(div); return div; } explication.addTo(macarte); } // Traçage du parcours par morceaux morceaux = function () { var indice_max=Parcours[piste].trace[troncon].length-1; // Indice extrême de la portion de parcours var indice=Math.round(indice_max/2); // Indice central de la portion de parcours macarte.flyTo(Parcours[piste].trace[troncon][indice]); // Centrage sur le point central de la portion de parcours + zoom for (var i=1; i <= indice_max ; i++) { // Calcul de la longueur de la portion de parcours, à ajouter à la longueur totale du parcours longueur += getDistance(Parcours[piste].trace[troncon][i-1],Parcours[piste].trace[troncon][i]); }; longueur = Math.round (longueur); explication = L.control({position : 'bottomright'}); explication.onAdd = function (map) { var div = L.DomUtil.create('div','parcoursPopup'); var message; switch (troncon) { case 0: message = 'Commencez votre promenade'; break; case Parcours[piste].trace.length-1: message = 'Terminez votre promenade'; break; default: message = 'Continuez votre promenade'; } div.innerHTML = Parcours[piste].waypoints[troncon] + '
' + '

' + ''; L.DomEvent.disableClickPropagation(div); // empêcher les actions de la souris sur la carte quand on est sur le div des explications (zoom avec la molette, ...) L.DomEvent.disableScrollPropagation(div); return div; } explication.addTo(macarte); route[troncon] = new L.Polyline(Parcours[piste].trace[troncon],polylineOptions_focus); route[troncon].addTo(macarte); var bords = route[troncon].getBounds(); var augmentation = 0.0002; bords._northEast.lat += augmentation; bords._northEast.lng += augmentation; bords._southWest.lat -= augmentation; bords._southWest.lng -= augmentation; macarte.fitBounds(bords); // Pour ajuster le zoom de la carte à la portion de parcours (un peu plus grand pour que les extrémités soient visibles) // ajout des points d'intérêt dans un rayon de 260 m autour de la ligne de la portion de parcours var cercle_layer = L.geoJSON(patrimoine, { onEachFeature: function (feature, layer) { layer.bindPopup(" " + '' + feature.properties.name + '
'+ feature.properties.description,customOptions); }, pointToLayer: function(feature, latlng) { for (var i = 0; i < Parcours[piste].trace[troncon].length; i ++) { var ecart=getDistance([latlng.lat,latlng.lng],Parcours[piste].trace[troncon][i]); if (ecart <= 260) { var marqueur_cercle = L.marker(latlng, { icon: L.icon({ iconUrl : iconBase + feature.properties.sym + '.png', iconSize : [23,37], }) }); markersArray.push(marqueur_cercle); // ajouter au tableau des marqueurs return marqueur_cercle; } } } }); cercle_layer.addTo(macarte); // ajout des lieux-dits dans un rayon de 260 m autour de la ligne de la portion de parcours var cercle_topo_layer = L.geoJSON(toponymie, { onEachFeature: function (feature, layer) { var description=feature.properties.Description; if (description == null) {description = ''} layer.bindPopup(" " + '' + feature.properties.Nom + '
'+ description,customOptions); }, attribution : ' + \"Noms de lieux du Grand Etalle\" par Albert Lamand ', pointToLayer: function(feature, latlng) { for (var i = 0; i < Parcours[piste].trace[troncon].length; i ++) { var ecart=getDistance([latlng.lat,latlng.lng],Parcours[piste].trace[troncon][indice]); if (ecart <= 260) { var marqueur_cercle_topo = L.marker(latlng, { icon: L.icon({ iconUrl : iconBase + 'circle.png', iconSize : [30,30], }) }); markersArray.push(marqueur_cercle_topo); // ajouter au tableau des marqueurs return marqueur_cercle_topo; } } } }); cercle_topo_layer.addTo(macarte); } // Ajout de ces contrôles L.control.layers(baseMaps).addTo(macarte); // Contrôle pour l'échelle L.control.scale({imperial: true}).addTo(macarte); // Contrôle pour le choix du parcours command.addTo(macarte); }; window.onload = function(){ // Fonction d'initialisation qui s'exécute lorsque le DOM est chargé initMap(); };