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 :
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";
						 }
					}
				 });	
			}
(avec ce code je vois bien que la boucle se déroule avant la fonction route.
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 ?