Salut à tous,

Dans le cadre d'un cours, je dois créer une application qui sert à afficher des parcours de randonnée (pédestre, VTT ou à cheval) sur une carte. Nous est fourni un fichier XML, et nous devons l'utiliser pour en extraire les informations utiles à la carte.

Ainsi, j'ai codé une fonction pour créer les Markers et les infosbulles.

Cependant, les markers doivent être 8 au total et avec mon code JS ci-dessous, il n'en apparaît que 5. De plus, dans l'infobulle doit s'afficher un titre, mais dans mon cas il ne correspond pas au Marker que l'on vient de cliquer.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
var map;
 
var initialize = function() {
  map = new google.maps.Map(document.getElementById('mapSection'), {
  center: {lat: 45.993, lng: 2.281},
  zoom: 5,
  mapTypeId: google.maps.MapTypeId.HYBRID
  });
 
  var infoBulle = new google.maps.InfoWindow();
 
  setMarkers(map, infoBulle);
 
  alert(nbMarker);
 
}
 
// Fonction qui determine la position des Markers         
function setMarkers(map, infoBulle) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', 'data/randos.xml', true);
  xhr.onload = function() {
   var doc = xhr.responseXML;
   var element = doc.getElementsByTagName('gpx:trkpt'); // On recupère toutes les coordonnées
   var title = doc.getElementsByTagName('dc:title'); // On recupère tout les titres
   for (var i = 1; i <= element.length; i++) {
      var lat = element[i].getAttribute("gpx:lat"); // On récupère la latitude
      var lon = element[i].getAttribute("gpx:lon"); // Et la longitude
 
      var point = new google.maps.LatLng(parseFloat(lat), parseFloat(lon));
 
      var content = '<h3>'+ title[i].firstChild.data +'</h3>';
 
      var marker = createMarker(point, content, infoBulle);
   };
  };
  xhr.send(null);
};
 
// Fonction qui créé les Markers et les infoBulles associées     
function createMarker(point, content, infoBulle) {
  var marker = new google.maps.Marker({
    position: point,
    map: map,
    draggable: false,
    animation: google.maps.Animation.DROP
  });
 
  google.maps.event.addListener(marker, 'click', function() {
    infoBulle.setContent(content);
    infoBulle.open(map, marker);
  });
};
 
window.onload = initialize;
J'espère avoir été clair, et si quelqu'un a une idée de solution je suis preneur, car je m'arrache les cheveux là dessus depuis 2 jours.

Cordialement.