Bonjour,

je suis un nouvel utilisateur de javascript, j'ai fais plusieurs recherches sur le net, et j'aurai besoin d'une confirmation concernant les calculs d'itinéraires avec points de passage.

J'arrive bien a implémenter un itinéraire d'un départ à une arrivée avec des points de passage en utilsant l'API Google MAp, mais si je fournis des points de passage "pas optimisés", l'algorithme ne cherche pas le meilleur chemin, il m'affiche l'itinéraire tel que fourni.

Donc dans le cas présent : après Blois, il file sur Marseille, remonte à Tours pour repartir à Toulon. Ce qui, vous en conviendrez, n'est pas optimisé du tout.

1) Est-ce effectivement une fonction non implémentée ?
2) Si elle ne l'est pas, existe-t-il une solution alternative ?
3) A combien de waypoints a-t-on droit au maximum ? (version gratuite)

Merci

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
		<script type="text/javascript">
			function initialisation(){
				var centreCarte = new google.maps.LatLng(47.389982, 0.688877);
				var optionsCarte = {
					zoom: 8,
					center: centreCarte,
					mapTypeId: google.maps.MapTypeId.ROADMAP
				}
				var itineraireCarte = new google.maps.Map(document.getElementById("EmplacementItineraireCarte"), optionsCarte);
				/**
				 * Moteur de rendu
				 */
				var optionsItineraireAffichage = {
					map: itineraireCarte,
					panel: document.getElementById("EmplacementItineraireTexte")
				}
				var itineraireAffichage = new google.maps.DirectionsRenderer(optionsItineraireAffichage);
				/**
				 * Service itinéraire
				 */
				var itineraireService = new google.maps.DirectionsService();
				/**
				 * Objet littéral
				 */
				 var itineraireRequete = {
					origin: "Paris",
					destination: "Toulon",
					/*waypoints: waypts,*/
					waypoints: [{ location:"Orléans, FR", stopover:true },
					{ location:"Blois, FR", stopover:true },
					{ location:"Marseille, FR", stopover:true },
					{ location:"Tours, FR", stopover:true }],
					travelMode: google.maps.DirectionsTravelMode.DRIVING
				}
				/**
				 * Envoie la requête vers les serveurs Google (Asynchrone)
				 */
				itineraireService.route(itineraireRequete, function(itineraireResultat, itineraireCodeStatut) {
					/**
					 * Si le résultat est valide on demande au moteur de rendu
					 * d'utiliser ce résultat pour mettre à jour l'affichage
					 * de l'itinéraire ( carte + roadbook)
					 */
					if (itineraireCodeStatut === google.maps.DirectionsStatus.OK) {
						 itineraireAffichage.setDirections(itineraireResultat);
					/**
					 * Sinon on affiche le code erreur
					 */
					}else{
						alert('Erreur : ' + itineraireCodeStatut);
					}
				});
			}
			google.maps.event.addDomListener(window, 'load', initialisation)
		</script>