Bonjour,
Je découvre leaflet et souhaite, lors de l’ajout d’un marker qu’une partie du Popup soit personnalisable, idéalement sans avoir besoin d’un bouton "Save".
Voici un code fonctionnel utilisant un input me permettant de personnaliser le contenu du popup.
Il pose problème faute de mémoriser le marker choisi. En effet, si on crée plusieurs marker (1 2 et 3) et qu’on choisi de personnaliser le marker 1 après validation du texte, c’est le dernier de la liste, le 3, qui s’actualise.
Bref comment procéder ?
Merci.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>Leaflet Map</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css" integrity="sha256-kLaT2GOSpHechhsozzB+flnD+zUyjE2LlfWPgU04xyI=" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js" integrity="sha256-WBkoXOwTeyKclOHuWtc+i2uENFpDZ9YPdf5Hf+D7ewM=" crossorigin=""></script>
<style>
#map {
width: 1000px;
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map', {scrollWheelZoom:false}).setView([46.82, 2.9], 6);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
WayPointsTrace = new L.LayerGroup();
map.on("contextmenu", function (e) {
addMarker(e);
map.addLayer(WayPointsTrace);
});
function addMarker(e) {
// Mémoriser position du marker
event_Marker = e;
Wpt_Name = '<b><input type="text" value="Etape NN" id="MyName"/> <input type="button" value="Save" OnClick="Update_Popup(event_Marker)"/>';
var Google = '<a href="https://www.google.com/maps?q=' + e.latlng.lat + "," + e.latlng.lng + '&spn=0.05,0.05&t=h&om=1" target="_blank">';
ItemPopup = Wpt_Name + "<br>" + e.latlng.lat.toFixed(6) + " - " + e.latlng.lng.toFixed(6) + "<br>" + Google + "Google Maps</a><br></b>";
// création du marker sans Drag et Drop
m = L.marker([e.latlng.lat, e.latlng.lng], {draggable: "false"}).bindPopup(ItemPopup);
// Ajout de la propriété name
m.data = {
properties: { name: Wpt_Name }
};
// Attacher le marker au layerGroup
m.addTo(WayPointsTrace);
m.getPopup().on("click", function (e) {
// m.setLatLng(e.latlng);
m.getPopup().setContent(ItemPopup);
});
}
function Update_Popup(e) {
Wpt_Name = document.getElementById("MyName").value;
m.data.properties.name = Wpt_Name;
// *************************************** TEST CONSOLE *************************************
console.log("1- data : " + m.data.properties.name);
console.log("2- GetContent : " + m.getPopup().getContent());
// ******************************************************************************************
m.closePopup();
// Actualiser content
var Google = '<a href="https://www.google.com/maps?q=' + e.latlng.lat + "," + e.latlng.lng + '&spn=0.05,0.05&t=h&om=1" target="_blank">';
ItemPopup = Wpt_Name + "<br>" + e.latlng.lat.toFixed(6) + " - " + e.latlng.lng.toFixed(6) + "<br>" + Google + "Google Maps</a><br></b>";
m.getPopup().setContent(ItemPopup);
}
</script>
</body>
</html>
+0
-0