[[web:accueilweb|{{ :iconemaison.jpg?nolink&25|Sommaire Web}}]]
===== JavaScript (jQuery) - Créer une carte Leaflet =====
{{ :web:javascript:leaflet1.jpg?nolink|}}
[Mise à jour le 11/6/2025]
\\
=== Ressources ===
* Généralités sur zestedesavoir.com
* Site coordonnees-gps.fr
* Site Leaflet : tutoriels
* Vidéo Les coordonnées géographiques, latitude, longitude, UTM
=== Prérequis ===
* Base de HTML, de CSS et de JavaScript (jQuery).
----
==== 1. La bibliothèque Leaflet ====
"//Leaflet est la bibliothèque JavaScript open source leader pour les cartes interactives mobiles. Avec un poids d'environ 42 Ko , elle offre toutes les fonctionnalités de cartographie dont la plupart des développeurs ont besoin.
Leaflet a été conçu dans un souci de simplicité , de performance et de convivialité . Elle fonctionne efficacement sur les principales plateformes de bureau et mobiles, peut être étendue grâce à de nombreux plug-ins , dispose d'une API élégante, facile à utiliser et bien documentée, ainsi que d'un code source simple et lisible.//" source Leaflet
{{ :web:javascript:leaflet2.png?nolink |}}
\\
==== 2. Présentation du projet ====
* **Placer** les liens suivants à la suite de //title//
* **Placer** une div nommée **//map//**, destinée à accueillir la carte dans le corps du document. Placer les div latitude et longitude utilisées dans les tests de communication.
Latitude :
* **Dimensionner** la carte avec une règle CSS (à placer dans l'en-tête du document à la suite des balises script).
=== 3.2 Code du fichier geolocalisation.js ===
$(document).ready(function () {
// L'ensemble du code doit être placé ici
});
let initLatitude = /* A compléter */;
let initLongitude = /* A compléter */;
* **Etape 2. Créer et initialiser la carte**
* **Ressource** : la classe Map \\ Le document contient le code ci-dessous. \\ \\
let map = L.map('map').setView([initLatitude, initLongitude], zoom);
* **Explications** \\
* let map : La variable nommée map est déclarée pour stocker l'objet carte créé par Leaflet. Cet objet contiendra toutes les informations et fonctionnalités associées à la carte (comme les marqueurs, les calques, les événements, etc.). \\
* L.map('map') : La méthode L.map() est utilisée pour créer une nouvelle carte Leaflet. Elle prend comme argument l'ID d'un élément HTML (dans ce cas, 'map'). Cet élément doit exister dans le fichier HTML et correspond généralement à une
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);
* **Explications** \\
* La sélection L.tileLayer fait référence à une méthode de la bibliothèque Leaflet utilisée pour ajouter des calques de tuiles (ou "tile layers") à une carte interactive.
* **Remarque** : //Il est important de noter que Leaflet est indépendant du fournisseur, ce qui signifie qu'il n'impose aucun choix particulier de fournisseurs pour les tuiles. De plus, Leaflet ne contient aucune ligne de code spécifique à un fournisseur ; vous êtes donc libre d'utiliser d'autres fournisseurs si nécessaire//.
// Exemple : mapbox propose des tuiles plus complètes (nécessite un jeton que l'on peut obtenir sur le site)
/*L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution: 'Map data © OpenStreetMap contributors, Imagery © Mapbox',
maxZoom: 19,
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: ''
}).addTo(map);*/
* **Etape 4. Ajouter un marqueur sur la carte**
* **Ressource** : la méthode Marker \\ \\
let marker = L.marker([initLatitude, initLongitude]).addTo(map);
* **Explications** \\
* Voir les explications de l'étape 2.
function chargerCoordonnees() {
let latitude;
let longitude;
$.ajax({
url: 'scripts/lireval0et1.php',
type: 'get',
dataType: 'json',
success: function (data) {
$.each(data, function (entryIndex, entry) {
// Pour les tests, on souhaite 0 < val0 < 1000 => 47.07970 < latitude < 47.01328
// Calculer la valeur de a et de b et les remplacer ci-dessous
latitude = a * parseFloat(entry.val0) + b;
// Pour les tests, on souhaite 0 < val1 < 1000 => 2.199468 < longitude < 2.409102
// Calculer la valeur de c et de d et les remplacer ci-dessous
longitude = c * parseFloat(entry.val1) + d;
// Afficher les valeurs numériques
$('#latitude').html(/*A compléter*/);
$('#longitude').html(/*(A compléter*/);
// Afficher un marqueur sur la carte (objet map)
map.flyTo([latitude, longitude], zoom, {
animate: true,
duration: 2 // en secondes
});
marker = L.marker([latitude, longitude]).addTo(map);
})
},
timeout: delaiError,
error: function () {
// pour aller plus loin
}
});
}
loadCoordinates(); // premier appel de la fonction
setInterval(function () { // appel de la fonction toutes les delaiMesure ms
loadCoordinates()
}, delaiMesure);
\\
====5. Pour aller plus loin ... ====