Ajout de fonctions pour carte interactive
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 :
Code:
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;
}
});
});
} |
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...
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 :calim2: