[Mise à jour le 4/5/2026]
“//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
Principe retenu
Matériels
Bibliothèques JavaScript
La création de la carte est guidée dans la suite de ce document. Le code sera placé dans les fichiers suivants : outilleaflet.html, geolocalisation.js et lireval0et1.php.
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script> <!-- Remplacer x.x.x par la version de la bibliothèque utilisée dans le projet --> <script src="scripts/jquery-x.x.x.min.js"></script> <script type="text/javascript" src="scripts/geolocalisation.js"></script>
<style> #map { width: /*A compléter*/; height: /*A compléter*/; } </style>
$(document).ready(function () { // L'ensemble du code doit être placé ici });
let initLatitude = /* A compléter */; let initLongitude = /* A compléter */;
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a> contributors' }).addTo(map);
// 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 © <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', maxZoom: 19, id: 'mapbox/streets-v11', tileSize: 512, zoomOffset: -1, accessToken: '' }).addTo(map);*/
function chargerCoordonnees() { let latitude; let longitude; $.ajax({ url: 'scripts/lireval0et1.php', type: 'get', dataType: 'json', success: function (data) { // Pour les tests, on souhaite 0 < val0 < 1023 => 47.01328 < latitude < 47.07970 // Calculer la valeur de a et de b et les remplacer ci-dessous latitude = a * parseFloat(data.val0) + b; // Pour les tests, on souhaite 0 < val1 < 1023 => 2.199468 < longitude < 2.409102 // Calculer la valeur de c et de d et les remplacer ci-dessous longitude = c * parseFloat(data.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);
Résultat attendu
<?php // URL à modifier en fonction de l'@IP et du programme de la carte Arduino $service_url = "http://192.168.231.51/lire/vals0et1"; // URL à modifier $curl = curl_init($service_url); // Envoi cURL à la carte Arduino curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_exec($curl); curl_close($curl); ?>