Bonjour !
Je souhaite rajouter des fonctions pour ma carte interactive, par exemple je veux rajouter une fonction qui lors du clic sur un marqueur permets d'afficher certains éléments voici mon code :
Au vue du résultat je me suis tromper, les marqueurs apparaissent mais pas les infos, je pense que je n'arrive pas à appeler ma requête ajax afin de récupérer les informations et les affichés...
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 let xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey=ddaf955496241ed6e6f7aa8e998b982be31b0064'); xhr.addEventListener('load', function() { if (xhr.status >= 200 && xhr.status < 400) { ma_callback(xhr.responseText); } else { ma_callback(xhr.status); } }); xhr.addEventListener('error', function() { console.log("erreur de connexion"); }); xhr.send(null); function ma_callback(response) { response = JSON.parse(response); response.forEach(function (info) { L.marker([info.position.lat, info.position.lng]).on('click', onMarkerClick).addTo(mymap).bindPopup(info.name); }); }; function onMarkerClick(e) { let address = document.getElementById("adresse-station"); let bikeStands = document.getElementById("place-libre"); let availableBikes = document.getElementById("velo-dispo"); let statusStation = document.getElementById("etat-station"); ma_callback (function (infos) { infos.forEach(function (info) { if ((e.latlng.lat === info.position.lat) && (e.latlng.lng === info.position.lng)) { address.innerText = info.address; bikeStands.innerText = info.bike_stands; availableBikes.innerText = info.available_bikes; statusStation.innerText = info.status return; } }); }); }
Ne serais t'il pas plus simple de mettre ma requête ajax au sein du fonction ?? (question bête peut être ) merci d'avance. J'avoue avoir pas mal de mal avec JavaScript même après plusieurs tutos et cours![]()
Partager