Bonjour,
1- Toujours en phase découverte de la puissance de leaflet, pour éviter de réinventer la roue, utilisation du plugin leaflet.filelayer.js Leaflet.FileLayer pour charger un par un ou en bloc des fichiers GPX présents localement.
Les polyline des trajets s’affichent sur la map et la récupération LatLng est possible à ce niveau.
2- Ajout d’un L.Control de manière à disposer de cases à cocher ayant pour libellé le nom racine du fichier chargé. Afficher ou masquer un ou des trajet(s) fonctionne.
Comment, sur détection du trajet sélectionné - donc affiché -, récupérer les LatLng de la seule polyline concerné ?
Dans ce cas de figure, je pensais utiliser le mot clef eachLayer, mais est-ce le bon et comment coder ?
Merci par avance.
// ================================================================
// Note : control.loader.on propre au pluging leaflet.filelayer.js
// ================================================================
control.loader.on("data:loaded", function (e) {
// Récupération du LatLng contenu dans le fichier chargé
e.layer.on("click", function (e) {
// Cibler uniquement une Polyline et non un Marker
if (e.layer instanceof L.Polyline) {
console.log(e.layer.getLatLngs());
// Création d'une nouvelle Polyline pour traitement divers, distance ... à coder
// let My_GPX = new L.Polyline(e.layer.getLatLngs())
}
});
// ajout d'un overlayMaps
layerControl.addOverlay(e.layer, e.filename.replace(/.gpx/g, "").replace(/.geojson/g, ""));
});
// ================================================================
let layerControl = new L.Control.Layers(null, overlayMaps, { collapsed: false }).addTo(map);
map.on("overlayadd", function (e) {
// =================================================================================================
// Comment récupérer directement sur sélection de la case à cocher LatLng de la Polyline affichée ?
// =================================================================================================
console.log("overlayMaps activé : " + e.name); // Ok
console.log(e.name.getLayers().getLatLng()); // Nok
console.log(e.getLayers().getLatLng()); // Nok
});
map.on("overlayremove", function (e) {
// ...
});
+0
-0