Bonjour,
je suis en train de développer un script de localisation de point d'intérêts les plus proches avec google maps.
Pour le moment, je suis ok sur la géolocalisation, j'ai récupéré des coordonnées depuis une base de données, et la je bloque sur une étape :
je veux faire une boucle sur tous mes points d'intérêts (500 pour l'instant) et calculer la distance en mètres entre notre position (géolocalisée) et la position du point.
Je ne comprend pas tout à fait la logique des requêtes asynchrones de G.maps... Si quelqu'un pouvait m'éclairer un peu...
la partie du code en question :
(avec ce code je vois bien que la boucle se déroule avant la fonction route.
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 // Comparaison des données GPS -> Calculs des distances for(var j=0; j<NbPoints; j++){ var directionsService = new google.maps.DirectionsService(); var requeteItineraire = { origin: MyLatLng, destination: PointLatLng[j], region: "fr", travelMode: google.maps.DirectionsTravelMode.DRIVING }; // Calculs des distances directionsService.route(requeteItineraire, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { // récupération de la distance totale du trajet en mètres distance = response.routes[0].legs[0].distance.value; // si la distance est inférieure au rayon de recherche if(distance <= rayon){ PointDistance[j] = "1"; nb_Point_ok++; alert("ok"+j); // Ajout d'un marker var truc = new google.maps.Marker({ position: PointLatLng[j], map: map, title:"Point found at : "+distance+"m !" }); } else{ PointDistance[j] = "0"; } } }); }
le alert s'éxécute 12 fois et me donne ok500 à chaque fois...)
Je pense qu'il me faut ajouter une fonction callback, mais je ne vois pas comment modifier la structure de ma boucle...
Quelqu'un peut me conseiller ?
Partager