Voici le code que j'utilise pour gérer la tournée commerciale : Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! Code (Windev): PROCEDURE DistanceDuree(sAddresseDest est une chaîne) Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(-25) sAdresseDepart est une chaîne = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("Mettre ici votre adresse de depart") Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps") Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps","origin", sAdresseDepart) Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps","destination",sAddresseDest) Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps","language", "fr-FR") Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps","units", "metric") Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps","key","AIzaSyBidfv2gaEAxSETUmRPnZdKL8amsma_8Oo") cMyRequest is httpRequest cMyRequest..URL = "[URL]https://maps.googleapis.com/maps/api/directions/xml[/URL]" cMyRequest..Method = httpGet cMyResponse is httpResponse = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("GoogleMaps", cMyRequest) IF cMyResponse..StatusCode <> 200 THEN // Se não funcionou RESULT(Null) END // xmlGoogle is xmlDocument = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(cMyResponse..Content, fromString) IF NOT xmlGoogle.DirectionsResponse.status..Text ~= "OK" THEN RESULT(Null) END //Lendo nos unicos sGloVoceEnderecoLongo est une chaîne = xmlGoogle.DirectionsResponse.route.leg.start_address sGloDestinoEnderecoLongo est une chaîne = xmlGoogle.DirectionsResponse.route.leg.end_address rGloTempoCarro est une réel= xmlGoogle.DirectionsResponse.route.leg.duration.value sGloTempoDestino est une chaîne = xmlGoogle.DirectionsResponse.route.leg.duration.text rGloDistanciaCarro est une réel= xmlGoogle.DirectionsResponse.route.leg.distance.value sGloDistanciaDestino est une chaîne= xmlGoogle.DirectionsResponse.route.leg.distance.text sGloPoligonalGoogle est une chaîne= xmlGoogle.DirectionsResponse.route.overview_polyline.points rGloNortelatitude est une réel= xmlGoogle.DirectionsResponse.route.bounds.northeast.lat rGloNorteLongitute est une réel = xmlGoogle.DirectionsResponse.route.bounds.northeast.lng rGloSullatitude est une réel = xmlGoogle.DirectionsResponse.route.bounds.southwest.lat rGloSulLongitute est une réel= xmlGoogle.DirectionsResponse.route.bounds.southwest.lng //Loop nos nós do xml nContador is int = 1 FOR EACH legNode OF xmlGoogle.DirectionsResponse.route.leg IF legNode..Name = "duration" THEN monTemps est un entier =legNode.value monTemps=monTemps/60 TANTQUE Vrai SI Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(monTemps,1) = "0" ALORS monTemps = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(monTemps, Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(monTemps)-1 ) SINON SORTIR FIN FIN SAI_Duree=monTemps // LIB_TempsH=EntierVersHeure(monTemps)+" min. END IF legNode..Name = "distance" THEN maDistance est un entier =legNode.value maDistance=maDistance/1000 SAI_Distance=maDistance END END J'utilise ensuite une autre procédure pour afficher le tout sur une carte Code (Windev): // Affiche un marqueur : lors du clic sur ce marqueur, une procédure est exécutée MaPosition est une géoPosition MaPosition..Latitude = SAI_Latitude MaPosition..Longitude = SAI_Longitude MonMarqueur est un Marqueur MonMarqueur..Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! = MaPosition MonMarqueur..Description= SAI_NomEntreprise //Gestion des marqueurs (carte Entreprise) MonMarqueur..Image="POI_"+COMBO_EXPRESS_statutbusiness[COMBO_EXPRESS_statutbusiness]+"_"+TABLE_REQ_ListeProspectParEntreprise.COL_EtatRelation+".png" CARTE_Entreprise..Zoom=18 Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(CARTE_Entreprise, MonMarqueur) Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(CARTE_Entreprise,MaPosition) //Gestion de l'itineraire (carte itineraire) sAddresseDest est une chaîne = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(SAI_Adresse+" "+SAI_Adresse2+" "+SAI_CodePostal+" "+SAI_Ville) sAdresseDepart est une chaîne = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!("Saisir ici votre adresse de dpart") sIdEXPRESS est une chaîne =Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(CARTE_initnéraire,[sAdresseDepart,sAddresseDest],itinéraireAutomobile) ONG_Emplacement..Visible=Vrai SAI_Distance..Visible=Vrai SAI_Duree..Visible=Vrai
Pour organiser les tournée j'execute la procedure pour chaque itinéraire que j ajoute ensuite. Je l'ai couplé avec l agenda google. Du coup mes commerciaux savent quand ils doivent partir pour le prochain rdv.
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! pas mal du tout ce code cela calcul l’itinéraire pour plusieurs adresses ?[/QUOTECliquez pour agrandir...