Bonjour à tous,
Ne trouvant aucune réponse pour m'aider à résoudre mon problème, je tente ma chance ici. Je vais contextualiser un peu : l'idée consiste à calculer la distance et le temps d'un trajet entre deux adresses afin de les comparer avec des critères. Cette comparaison doit se faire plusieurs fois (il y a une adresse élève fixe et plusieurs adresses de professeurs différentes). Pour le moment, je le fais en mode "test", à savoir que je le fais dans une boucle "foreach" avec deux fois deux adresses semblables.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 foreach($liste_professeur as $value) { //on gère les apostrophes des adresses $adresse_eleve = addslashes($adresse_eleve); $value = addslashes($value); $var1 = $adresse_eleve; $var2 = "30 avenue Roul Talence"; $num_prof = "16"; echo "$value"; echo "<script>calculate('$var1', '$var2', $value);</script>"; }
Le script appelé en question, et qui me donne une erreur, est le suivant :
Concrètement, cela fonctionne quand je n'ai qu'une seule fois le calcul à faire. Mais cela ne fonctionne plus une fois qu'on passe la boucle, et on obtient ceci : "Uncaught TypeError: Cannot read property 'setDirections' of undefined". Le problème, c'est que je ne comprends pas pourquoi, sachant bien qu'il affiche les adresses apparemment comme il faut deux fois dans les "alert". Si quelqu'un avait une piste, je lui en serais très reconnaissant !
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 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=fr"></script> <script type="text/javascript"> var initialize; var calculate; var direction; initialize = function() { var contentMarker = [].join(''); direction = new google.maps.DirectionsRenderer(); }; calculate = function(Adresse1, Adresse2, NumeroProf) { var origin = Adresse1; var destination = Adresse2; if (origin && destination) { var request = { origin: origin, destination: destination, //on peut modifier le mode de transport avec cette page http://www.touraineverte.com/google-maps-api-version-3/exemple-tutoriel-itineraires-directions/index.html //on peut y trouver à pied, en vélo, en voiture (avec ou sans autoroute) et, apparemment, les transports en commun travelMode: google.maps.DirectionsTravelMode.DRIVING // Mode de conduite } alert(origin); alert(destination); var directionsService = new google.maps.DirectionsService(); // Service de calcul d'itinéraire directionsService.route(request, function(response, status) { // Envoie de la requête pour calculer le parcours if (status == google.maps.DirectionsStatus.OK) { direction.setDirections(response); // Display the distance: var distance = response.routes[0].legs[0].distance.value; //en metre // Display the duration: var duree = response.routes[0].legs[0].duration.value; //en seconde var numero = NumeroProf; } }; </script>
Partager