Bonjour,

MarkerClusterGroup qui contient par exemple 10 markers avec des icônes identique.

Comment procéder pour modifier l'icône d'un seul marqueur de ce groupe, sur un clic droit qui mémorise un marqueur destiné à d'enrichir un fichier GPX en construction ?

Pour un L.LayerGroup(); ce code fonctionne parfaitement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
marker.setIcon(MyIcon_red);
Lu ici cette documentation :
https://github.com/Leaflet/Leaflet.m...stered-markers
dont un paragraphe "Actualisation de l’icône des clusters" (mis en service et change l'aspect des clusters, ce qui ne correspond pas à mon interrogation) puis ce code qui me semblait ne s'appliquer que pour un Marker précis du cluster...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
markers.refreshClusters(myMarker);
Ma portion de code concerné :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function markersArray(items, icon) {
                // var markers = new L.featureGroup();
                var markers = L.markerClusterGroup({
				chunkedLoading: true });
				// Lecture d'un tableau contenant nom du WayPoint, Latitude, Longitude
                for (var i = 0; i < items.length; i++) {
                    var item = items[i];
 
                    var itempopup = "<b>" + item[0] + "<br>" + item[1].toFixed(5) + "," + item[2].toFixed(5) + "<br>" + MyURL + "Maps</a><br></b>";
                    marker = new L.marker([item[1], item[2]], { icon: icon }).bindPopup(itempopup);
                    markers.addLayer(marker);
                }
                markers.on("click", function (e) {
                    e.layer.openPopup();
                });
 
				// sur click droit du marker
				markers.on("contextmenu", function (e) {
				 // Actualiser icone et informations en entête de page
				// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
				// Test en cours
				// afficher un marqueur d'une autre couleur pour matérialiser la prise en compte du WayPoint
                    e.layer.setIcon(MyIcon_red);
				// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
 
                    document.getElementById("EnteteCenter").firstChild.nodeValue = "Marqueur retenu pour création fichier trace GPX";
 
                    // Ajout Latitude Longitude de ce marqueur dans le fichier GPX en construction
                    Add_in_File_GPX(e.layer.getLatLng().lat.toFixed(5), e.layer.getLatLng().lng.toFixed(5));
                });
 
                return markers;
            }
Merci par avance d'éclairer ma lanterne !

Amicalement,

EDIT :

Je pense avoir trouvé UNE solution en supprimant le marqueur affichée avant remplacement (voir ajout removeLayer dans la zone de code , cela fonctionne mais est-ce pérenne ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 // Remplacer icone par une autre
				// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
				// Test en cours
				// Supprimer en premier le Marker actuel
				lgMarkers.removeLayer(e.layer);
				// afficher un marqueur d'une autre couleur matérialise la prise en compte du WayPoint
                                e.layer.setIcon(MyIcon_red);
				// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=