IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Calculer une duree de trajet Google Map


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Calculer une duree de trajet Google Map
    Bonjour a tous !
    Apres avoir réglé mon problème pour tester l'existence d'un point, je me heurte a un autre soucis...

    J'ai une liste de marqueurs (en dur). J'ai mon formulaire ou l'utilisateur entre sa ville.
    Une fois sa ville récupérée, je calcule les itinéraires vers tous les points.
    Ils s'affichent tous sur la carte. Et justement, je ne souhaite afficher que le plus court...
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map,directionsPanel);
    directions.load("from:"+adresse+" to:"+magasin1.adresse);
    directions2 = new GDirections(map,directionsPanel);
    directions2.load("from:"+adresse+" to:"+magasin2.adresse);
    directions3 = new GDirections(map,directionsPanel);
    directions3.load("from:"+adresse+" to:"+magasin3.adresse);
    est-il possible de calculer la duree du trajet, sans l'afficher ?
    J'ai trouvé cette fonction mais je n'arrive pas à l'appliquer : getDuration().seconds;

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    que te donnerais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(directions3.getDurations().seconds)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Rien du tout...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    essaye:

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    La, j'ai bien une alerte.
    Mais ça m'affiche "undefined"...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    J'ai presque réussit !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    directions = new GDirections();
    directions.load("from:"+adresse[1]+"to:"+magasin1.adresse);					
    GEvent.addListener(directions,"load", function() {
    var mesure = directions.getDistance().meters;
    var duree = directions.getDuration().seconds;
    var iti = new dist(mesure,duree);
    alert("Distance en metres : "+iti.distance+"\nTemps en secondes : "+iti.duree);	
    });
    L'alerte m'affiche les bonnes valeurs.
    Le soucis c'est que je veux exploiter ces données à l'extérieur du GEvent.addListener().
    Mais si je fais un alert(iti.distance); par exemple, il ne m'affiche rien...

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var Duree;
    directions = new GDirections();
    directions.load("from:"+adresse[1]+"to:"+magasin1.adresse);					
    GEvent.addListener(directions,"load", function() {
    var mesure = directions.getDistance().meters;
    Duree = directions.getDuration().seconds;
    var iti = new dist(mesure,duree);
    alert("Distance en metres : "+iti.distance+"\nTemps en secondes : "+iti.duree);	
    });
    voire faireun array des durées et distances ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Le problème, c'est que les variables n'existent qu'à l'intérieur du GEvent.addListener()...
    J'ai essayé d'enlever var quand je déclare mes variables, mais ça ne change rien...

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    D'ou le fait de déclarer la variable en dehors ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    J'arrive a avoir mon alerte !
    Mais iti est vide...

    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
     
    function dist(distance,duree){
    	this.distance = distance;
    	this.duree = duree;
    }
     
    var iti = new dist('','');
    directions = new GDirections();
    directions.load("from:"+adresse[1]+" to:"+magasin1.adresse);					
    GEvent.addListener(directions,"load", function() {
    	var mesure = directions.getDistance().html;
    	var duree = directions.getDuration().html;
    	mesure = mesure.replace(" "," ");
    	iti.distance = mesure;
    	iti.duree = duree;
    });				
    alert("Trajet : Votre domicile - "+magasin1.nom+"\nDistance : "+iti.distance+"\nTemps de trajet : "+iti.duree);

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Pas d'idées sur ce qui pourrait poser probleme ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tu inserres ton alert dans la fonction cela fonctionne
    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
     
    function show_info() {
            var adr_dep = document.getElementById("adr_dep").value;
            var adr_dest = document.getElementById("adr_dest").value;
            var iti = new dist('','');
            directions = new GDirections();
            directions.load("from:"+adr_dep+" to:"+adr_dest);
            GEvent.addListener(directions,"load", function() {
            	var mesure = directions.getDistance().html;
            	var duree = directions.getDuration().html;
            	mesure = mesure.replace(" "," ");
            	iti.distance = mesure;
            	iti.duree = duree;
            	alert("\nDistance : "+iti.distance+"\nTemps de trajet : "+iti.duree);
            });
    Donc iti n'est pas vide

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    Ah, la détection du load, doit être déclarée avant le load !
    Sinon, il faut une tempo avnt de capturer les données, mais je ne me souviens plus ou je l'ai lu.

    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
     
          function show_info() {
            var adr_dep = document.getElementById("adr_dep").value;
            var adr_dest = document.getElementById("adr_dest").value;
            //var iti = new dist('','');
            directions = new GDirections(map);
            GEvent.addListener(directions,"load", function() {
            	var mesure = directions.getDistance().html;
            	var duree = directions.getDuration().html;
            	mesure = mesure.replace(" "," ");
            	iti.distance = mesure;
            	iti.duree = duree;
            });
            directions.load("from:"+adr_dep+" to:"+adr_dest);
            setTimeout("alert(\"Distance : \"+iti.distance+\" => Temps de trajet : \"+iti.duree)",1000);
          }

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Finalement, je ne pourrais pas faire comme ça...
    Il y a trop de magasins a placer, du coup le script plante...

    Il faut donc que j'utilise un fichier kml, qui contient mes marqueurs...
    Et j'ai encore un soucis

    J'ai réalisé mon fichier kml avec ma liste de marqueurs pour google map.
    Le probleme, c'est qu'il ne fonctionne pas tout le temps...
    Tout à l'heure, il marchait bien. J'ai ensuite ajouté des marqueurs dedans et il ne fonctionne plus... Pourtant, il me semble bien avoir respecté le format...
    Voici mon code :
    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
      <Placemark>
        <name>Magasin 1</name>
        <description><![CDATA[<b>Adresse :</b> Centre commercial Géant, Route de Bastia, 20137 PORTO VECCHIO]]></description>
        <Point>
          <coordinates>9.2783,41.5917</coordinates>
        </Point>
      </Placemark>
     
      <Placemark>
        <name>Magasin 2</name>
        <description><![CDATA[<b>Adresse :</b> RN91 -  Moulin Baron, 05240 LA SALLE LES ALPES ]]></description>
        <Point>
          <coordinates>6.5733, 44.9447</coordinates>
        </Point>
      </Placemark>
    etc....
    Voyez vous d'ou peux provenir le probleme ? Merci d'avance !

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Pas d'idées ?...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 81
    Points
    81
    Par défaut
    Bonjour à tous ,
    J'utilise Google map , et je voudrais savoir comment spécifier dans mon code les options "éviter les péages" ou "éviter les autoroutes" (comme sur le formulaire de la page Google Map), voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     var directions;
     
    		function onLoad() {
    			//directionsPanel = document.getElementById("autoroute");
    		        directions = new GDirections(null,null);
    		        directions.load("from: 77 le mans , FR to: 45 orleans , FR");
    		        GEvent.addListener(directions,"load", function() {
    				var sommaire = directions.getSummaryHtml();
    				alert(sommaire);
    				var elmt = document.getElementById('contenu');
    				elmt.childNodes[1].firstChild.nodeValue + ' ' + sommaire;
    			});
    		}
    le truc c'est que pour l'exemple donné de mon code c'est que la distance n'est pas du tout la même si on utilise le péage ou l'autoroute entre le mans et Orleans.

    Merci de votre aide.

Discussions similaires

  1. Comment calculer une durée ?
    Par PtiteNanou dans le forum Modélisation
    Réponses: 23
    Dernier message: 22/02/2008, 15h23
  2. [Forum] Aller à la ligne dans une fenêtre d'information Google Map
    Par guigui5931 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 31/10/2007, 12h27
  3. calculer une durée en shell
    Par antigone dans le forum Linux
    Réponses: 1
    Dernier message: 23/08/2007, 18h34
  4. [MySQL] Aide pour calculer une durée
    Par Sandara dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/06/2006, 17h00
  5. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo