Bonjour,

Je fait actuellement un système pour récupérer les informations sur des magasins (horaires d'ouverture, lieu ..). J'utilise pour cela l'api google map plus précisément le placeService. Je dois procéder en 2 étapes : récupérer le place_id pour pouvoir utiliser la méthode getDetails() qui demande se dernier en paramètres car c'est cette méthode qui me fourni le plus de détails. Mais voilà je n'arrive pas à sortir les informations pour y avoir accès en dehors des closurs comme ci-dessous :


for (var i = 0; i < locations.length; i++) {
                        var input = /** @type {HTMLInputElement} */(
                          locations[i][6] + " " + locations[i][3] + " " + locations[i][4]);

                        var request = {
                            location: new google.maps.LatLng(locations[i][1], locations[i][2]),
                            radius: 50,
                            query: input
                        }
                        var placeid = [],
                            place_id;
                        service.textSearch(request, function(results, status){
                            //console.log(results);
                            placeid.push([results[i].place_id]);
                            place_id = results[0].place_id;
                        });
                        service.getDetails({placeId: results[i].place_id}, function(place, stat){
                            console.log(place[i].name);
                            //console.log(place[i].icon);
                            //$("#openHours").empty().append('');
                        });
 }

j'aimerai avoir accès au place_id en dehors afin de l'injecter dans la méthode getDetails..
SI vous avez une solutions ou un autre moyen de parenir au résultat ça serai super ;)

Merci d'avance

2 réponses


antho07
Réponse acceptée

Bonjour,
ce n'est pas un problème de portée de variable.
Tu raisonnes en synchrone alors qu'ici le fonctionnement est asynchrone...
Effectue le deuxième appel en callback du premier:

        service.textSearch(request, function(results, status){
                            console.log(results);
                     service.getDetails({placeId: results.place_id}, function(place, stat){
                            console.log(place);

                        });
                        });

En effet ça fonctionne comme ça, j'avai essayé hier et je n'arrivais pas à accéder aux attribus de place, mais en fait si, merci à toi en tout cas antho07 ;)