Bonjour,

je suis sur une appli Google Maps : sur ma carte je dois afficher des marqueurs (qui sont en fait des arrêts de bus) à partir d'un fichier XML.

Jusque là tout va bien, par contre lorsque je veux ajouter chaque marqueur au gestionnaire d'événements (GEvent.addListener) il ne prend en compte que le dernier de ma liste, ce qui fait que tous mes marqueurs affichent le même contenu lorsqu'on clique dessus.

Voici le bout 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
// pour chaque élément du tableau on crée un marqueur
                for (var i = 0; i < arrets.length; i++)
                 {
                    // on récupère les infos de chaque arrêt
                    var codArret = arrets[i].getAttribute("cod");
                    var nomArret = arrets[i].getAttribute("nom");
                    var lat = parseFloat(arrets[i].getAttribute("lat"));
                    var lon = parseFloat(arrets[i].getAttribute("lon"));
 
 
                    // on définit les coordonnées du marqueur
                    var point = new GLatLng(lat, lon);
 
                    // on crée le marqueur avec les coordonnées
                    var marker = new GMarker(point);
                    marker.value = codArret ;
 
                    // on l'ajoute au gestionnaire d'événements
                    GEvent.addListener (marker, "click", function()
                    {
                        marker.openInfoWindowHtml (nomArret + ' (' + codArret + ')');
                    });
 
                    // on place le marqueur sur la carte
                    map.addOverlay(marker);
                }
A noter que j'ai fait un test en rentrant manuellement 2 marqueurs en spécifiant des variables différentes (var nomArret1 et var nomArret2) et ça marche comme ça.

Je suppose donc qu'il y a un soucis dans la visibilité de mes variables, mais vu que c'est mon premier code en javascript je vois pas où est le soucis.