Couches et Interactivité avec Leaflet

Chargeur En cours de chargement…
Logo EAD Cela prend trop de temps ?

Recharger Recharger le document
| Ouvert Ouvrir dans un nouvel onglet

Diapo 1: Introduction aux couches (Layers)

Explication : Les couches dans Leaflet sont des objets géographiques que l’on ajoute à une carte. Il existe principalement deux types :

Couches de tuiles : Ces couches servent de fond pour la carte (par exemple, OpenStreetMap).

Couches vectorielles : Elles sont utilisées pour ajouter des éléments géographiques tels que des points, des lignes ou des polygones.

Diapo 2: Ajouter une couche de tuiles

Explication : Les couches de tuiles affichent l’image de fond de la carte. L’exemple montre comment ajouter une couche OpenStreetMap via la méthode L.tileLayer().

Exemple de code :

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

Les tuiles permettent de visualiser le fond de la carte tout en affichant d’autres éléments géographiques.

Diapo 3 : Ajouter des polygones et des polylignes

Explication : Les polygones et polylignes sont utilisés pour ajouter des formes géométriques sur la carte. Les polylignes permettent de tracer des lignes (par exemple, des itinéraires), tandis que les polygones sont utilisés pour dessiner des zones (ex. : parcs, bâtiments).

Exemple de polyligne :

L.polyline([[48.8566, 2.3522], [48.8569, 2.3525]]).addTo(map); 

Exemple de polygone :

L.polygon([[48.8566, 2.3522], [48.8569, 2.3525], [48.8571, 2.3520]]).addTo(map); 

Ces éléments peuvent être utilisés pour définir des zones d’intérêt géographique.

Diapo 4 : Popups et tooltips

Explication : Les marqueurs sont utilisés pour placer des points sur la carte, et ils peuvent être associés à des popups ou tooltips. Les popups affichent des informations détaillées lorsque l’utilisateur clique sur un marqueur, tandis que les tooltips affichent des informations temporaires au survol du marqueur.

Exemple de popup :

L.marker([48.8566, 2.3522]).addTo(map)  .bindPopup("Bienvenue à Paris!")  .openPopup(); 

Exemple de tooltip :

L.marker([48.8566, 2.3522]).addTo(map)  .bindTooltip("Paris", { permanent: true, direction: 'top' })  .openTooltip();

Diapo 5 : Groupes de calques (LayerGroup)

Explication : Les groupes de calques sont utilisés pour organiser plusieurs éléments géographiques sous un même groupe. Cela permet de gérer plus facilement l’affichage ou le masquage de plusieurs objets sur la carte en une seule opération.

Exemple de code :

var markers = L.layerGroup([marker1, marker2, marker3]).addTo(map);

Ici, les marqueurs sont ajoutés à un groupe, ce qui facilite la gestion des éléments géographiques sur la carte.

Diapo 6 : Contrôle des couches (Layer Control)

Explication : Le contrôle des couches permet à l’utilisateur de choisir quelles couches afficher ou masquer sur la carte. Cela inclut la possibilité d’activer des couches de tuiles différentes ou des éléments vectoriels comme des marqueurs ou des polygones. Le contrôle des couches est une fonctionnalité clé pour les cartes interactives.

Exemple de code :

var baseMaps = {  "OpenStreetMap": osmLayer,  "Satellite": satelliteLayer};

var overlayMaps = {  "Marqueurs": markersLayer};

L.control.layers(baseMaps, overlayMaps).addTo(map); 

Cela permet à l’utilisateur de basculer entre différentes couches d’affichage.

Diapo 7 : Ajouter une couche GeoJSON

Explication : Le GeoJSON est un format de données couramment utilisé pour afficher des objets géographiques. Leaflet permet de charger facilement des données GeoJSON et de les afficher sous forme de points, lignes ou polygones.

Exemple de code :

L.geoJSON(geojsonData).addTo(map);

Cela permet de superposer des données géographiques externes directement sur la carte.

Diapo 8 : Événements utilisateur

Explication : Leaflet permet de gérer des événements utilisateur tels que le clic, le survol ou le glissement sur la carte. Ces événements peuvent être associés à des actions spécifiques, comme afficher des informations ou effectuer des calculs.

Exemple d’événement click sur la carte :

map.on('click', function(e) {  alert("Vous avez cliqué sur la carte à " + e.latlng);});

Cela ajoute de l’interactivité à la carte et permet aux utilisateurs d’interagir directement avec les éléments géographiques.

Exercice Séance 2– Gestion des couches et interactions dans Leaflet

Objectif :

Créer une carte avec plusieurs types de couches vectorielles, les organiser dans un groupe, y ajouter des popups, des tooltips, et gérer des événements utilisateur.


Fichier à créer : exercice-couches.html

Dans un éditeur de texte, copiez-collez le code suivant et enregistrez le fichier avec le nom exercice-couches.html.

exercice-couches.html

<!DOCTYPE html>

<html>

<head>

    <title>Exercice Couches Leaflet</title>

    <meta charset="utf-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />

    <style>

        #map { height: 500px; width: 100%; }

    </style>

</head>

<body>

    <h2>Gestion des couches et interactions</h2>

    <div id="map"></div>

 

    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>

    <script>

        var map = L.map('map').setView([-20.2, 57.5], 10);

 

        // Fond de carte

        var osm = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {

            attribution: '© OpenStreetMap contributors'

        }).addTo(map);

 

        var toner = L.tileLayer('https://stamen-tiles.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png', {

            attribution: '© Stamen'

        });

        // ➤ Polygone : zone

        var zone = L.polygon([

            [-20.24, 57.48], [-20.26, 57.50], [-20.25, 57.52], [-20.23, 57.50]

        ], {

            color: 'green',

            fillOpacity: 0.4

        }).bindPopup("Zone naturelle").bindTooltip("Zone verte");

        // ➤ Polyligne : trajet

        var ligne = L.polyline([

            [-20.17, 57.51], [-20.20, 57.54], [-20.22, 57.52]

        ], {

            color: 'blue',

            weight: 4

        }).bindPopup("Trajet principal");

        // ➤ Cercle

        var cercle = L.circle([-20.19, 57.48], {

            radius: 2000,

            color: 'red',

            fillOpacity: 0.3

        }).bindPopup("Rayon de 2 km").bindTooltip("Zone d’influence");

        // ➤ Couche GeoJSON

        var geojsonData = {

            "type": "FeatureCollection",

            "features": [{

                "type": "Feature",

                "properties": { "nom": "Zone agricole" },

                "geometry": {

                    "type": "Polygon",

                    "coordinates": [[[57.52, -20.24], [57.54, -20.24], [57.54, -20.22], [57.52, -20.22], [57.52, -20.24]]]

                }

            }]

        };

 

        var geojsonLayer = L.geoJSON(geojsonData, {

            style: { color: "orange", weight: 2, fillOpacity: 0.5 },

            onEachFeature: function (feature, layer) {

                layer.bindPopup("Nom : " + feature.properties.nom);

                layer.on("click", function () {

                    console.log("Clic sur " + feature.properties.nom);

                    map.fitBounds(layer.getBounds());

                });

            }

        });

        // ➤ Groupes de couches

        var couchesVecteurs = L.layerGroup([zone, ligne, cercle]);

        var couchesGeoJSON = L.layerGroup([geojsonLayer]);

 

        // ➤ Contrôle des calques

        var fond = {

            "OpenStreetMap": osm,

            "Toner Lite": toner

        };

 

        var donnees = {

            "Objets vectoriels": couchesVecteurs,

            "GeoJSON Zones": couchesGeoJSON

        };

        L.control.layers(fond, donnees).addTo(map);

        // Ajout par défaut

        couchesVecteurs.addTo(map);

        couchesGeoJSON.addTo(map);

    </script>

</body>

</html>

Instructions :

  1. Ouvrez le fichier HTML dans votre navigateur.
  2. Explorez les couches affichées : zone verte, polyligne bleue, cercle rouge, et un polygone GeoJSON orange.
  3. Utilisez le layer control en haut à droite pour activer/désactiver les couches.
  4. Cliquez sur les objets pour voir les popups ; survolez-les pour voir les tooltips.
  5. Ouvrez la console (F12) et cliquez sur la zone GeoJSON pour observer le message dans la console + zoom auto.


Modifications suggérées :

  • Ajoutez un autre polygone GeoJSON avec un style différent.
  • Personnalisez les tooltips (ajoutez des infos utiles).
  • Modifiez le layer.on('click') pour changer la couleur au clic ou ajouter un effet visuel.

Voir le résultat dans un nouvel onglet.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *