Bonjour !

Je débute en développement et je cherche à comprendre le code ci-dessous, si quelqu’un peut me l’expliquer en détail je vous en serrais grandement reconnaissant par exemple qu’est ce que : (verb, url) dans "req.open(verb, url);".

Je pense avoir compris que l’on créer une fonction que l’on appel "Request" et qu’elle est appeler par le second morceau de code ce qui fait apparaître des marqueurs sur une carte, je sais aussi que l'on récupère les données d'un API, mais j’aimerai de plus amples détails.

Merci d’avance.

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
57
58
59
function Request(verb, url) {
 
    this.verb = verb;
    this.url = url;
 
    var stations = [];
 
    this.call = function(callback) {
        var req = new XMLHttpRequest();
        req.open(verb, url);
 
        req.addEventListener('load', function() {
            if (req.status >= 200 && req.status < 400) {
                stations = JSON.parse(req.responseText);
                callback(req.responseText);
            } else {
                callback(req.status);
            }
        });
 
        req.addEventListener('error', function() {
            console.log("erreur avec l'url " + url);
        });
 
        req.send(null);
    };
 
    this.form = function(callback) {
        callback(stations);
    };
 
}
var requestApiJcDecaux = new Request("GET", "https://api.jcdecaux.com/vls/v1/stations?contract=Toulouse&apiKey=xxxxxxxxxxxxxxxxxxxxxxxxxx");
 
requestApiJcDecaux.call(function (response) {
 
    response = JSON.parse(response);
    response.forEach(function (info) {
        var latitude = info.position.lat;
        var longitude = info.position.lng;
        L.marker([latitude, longitude]).on('click', onMarkerClick).addTo(map);
    });
 
    function onMarkerClick(e) {
        var addressElt = document.getElementById("address");
        var bikeStandsElt = document.getElementById("bikeStands");
        var availableBikesElt = document.getElementById("availableBikes");
        requestApiJcDecaux.form(function (infos) {
            infos.forEach(function (info) {
                if ((e.latlng.lat === info.position.lat) && (e.latlng.lng === info.position.lng)) {
                    addressElt.innerText = info.address;
                    bikeStandsElt.innerText = info.bike_stands;
                    availableBikesElt.innerText = info.available_bikes;
                    return;
                }
            });
        });
    }
});