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

APIs Google Discussion :

Récupération coordonnées gps pour itinéraire [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 23
    Points : 12
    Points
    12
    Par défaut Récupération coordonnées gps pour itinéraire
    Bonjour à tous,

    En utilisant l'API Google Map V3(web), j'essaye de calculer des itinéraire que j'ai déjà placer leur position.
    Le problème c'est que je sais pas comment s'y prendre pour que ce soit les coordonnées gps du téléphone soit prise en compte pour le calcul.

    Voici un bout de code que j'ai fais:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    if (navigator.geolocation)
    {
     
    function affichePosition(position)
    {
    	var infopos = "Position déterminée : <br>";
    		infopos += "Latitude : "+position.coords.latitude +"<br>";
    		infopos += "Longitude: "+position.coords.longitude+"<br>";
    		document.getElementById("maposition").innerHTML = infopos;
     
    		var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);					//recuperation coordonnée gps
     
    		var marker = new google.maps.Marker({
    			position: latlng,
    			map: map,
    			title:"Vous êtes ici"
    		});
    		map.panTo(latlng);
    }
    var origin1 = new google.maps.LatLng(-18.903906,47.522092 );
     
    //Les déstinations
    var destinationA = new google.maps.LatLng(-18.868628,47.528051);   
    var destinationB = new google.maps.LatLng(-18.908939, 47.525125 );
     
    		var image = {
        url: 'imag/logo.png',
     
        size: new google.maps.Size(40, 40),
     
        origin: new google.maps.Point(0,0),
     
        anchor: new google.maps.Point(0, 0)
      };
    var originIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=O|FFFF00|000000';
     
    function initialize() {
      var opts = {
        center: new google.maps.LatLng(-18.909736,47.5246 ),
        zoom: 14
      };
      map = new google.maps.Map(document.getElementById('map-canvas'), opts);
      geocoder = new google.maps.Geocoder();
    }
     
    function calculateDistances() {
      var service = new google.maps.DistanceMatrixService();
      service.getDistanceMatrix(
        {
          origins: [origin1],
          destinations: [destinationA, destinationB],
          travelMode: google.maps.TravelMode.DRIVING,
          unitSystem: google.maps.UnitSystem.METRIC,
          avoidHighways: false,
          avoidTolls: false
        }, callback);
     
    function callback(response, status) {
      if (status != google.maps.DistanceMatrixStatus.OK) {
        alert('Error was: ' + status);
      } else {
        var origins = response.originAddresses;
        var destinations = response.destinationAddresses;
        var outputDiv = document.getElementById('outputDiv');
     
        outputDiv.innerHTML = '';
        deleteOverlays();
     
        for (var i = 0; i < origins.length; i++) {
          var results = response.rows[i].elements;
     
     
    			recuperation = response.rows[i].elements;
     
          addMarker(origins[i], false);
          for (var j = 0; j < results.length; j++) {
            addMarker(destinations[j], true);
            outputDiv.innerHTML += origins[i] + ' -> ' + destinations[j]
                + ': ' + results[j].distance.text + ' en '
                + results[j].duration.text + '<br>';
          }
        }
    }
    Le problème c'est que quand je remplace origin1 par latlng
    origins: [latlng],
    ça ne marche pas.

    Est-ce que quelqu'un peut m'aider svp?
    Merci

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 108
    Points : 44 921
    Points
    44 921
    Par défaut
    Bonjour,
    tu as un problème de portée de tes variables, ta variable latlng n'est connu que dans ta fonction affichePosition.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    Merci ça a marché .J'ai pas pris ce détail là .

    Tant que j'y suis, j'ai utilisé le tutos [trouver les markers les plus proches en fonctions d'une adresse donnée].
    J'ai ajoutée 22 points fixe (pour la déstination)
    Le but c'est de trier les 5 premiers destination le plus proche.
    J'ai fais comme ceci :

    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
     
     
    function callback(response, status) {
      if (status != google.maps.DistanceMatrixStatus.OK) {
        alert('Error was: ' + status);
      } else {
        var origins = response.originAddresses;
        var destinations = response.destinationAddresses;
        var outputDiv = document.getElementById('outputDiv');
    		var ind,recuperation;
        outputDiv.innerHTML = '';
        deleteOverlays();
     
        for (var i = 0; i < origins.length; i++) {
          var results = response.rows[i].elements;
     
     
    			recuperation = response.rows[i].elements;
    			for( var ind = 0; ind < recuperation.length; ind++) {
            recuperation[ind].ville = response.destinationAddresses[ind];
          }
          // tri des donnees ordre croissant
          recuperation.sort( function( a, b){
              return( a.distance.value - b.distance.value);
            });
     
          addMarker(origins[i], false);
          for (var j = 0; j <5; j++) {
            addMarker(destinations[j], true);
            outputDiv.innerHTML += origins[i] + ' -> ' + destinations[j]
                + ': ' + results[j].distance.text + ' en '
                + results[j].duration.text + '<br>';
          }
        }
      }
    }
    Le truc marche mais le problème est la distance.
    Pour être précis (résutlat du code):
    origin1-> destination A : 37m en mn

    Alors qu'en maps.google.fr j'ai
    origin1-> destantion A : 1km en 4mn (juste)

    Pourtant si je limite les destination à 6 point fixe (au lieu de 22 j'ai fai 6)
    J'ai le même résultat que maps.google. pour le code si je tri 5 premiers déstination le plus proches.

    Y a-il- une limite pour les fixer les déstinations pour google maps?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 108
    Points : 44 921
    Points
    44 921
    Par défaut
    Y a-il- une limite pour les fixer les déstinations pour google maps?
    https://developers.google.com/maps/d...d_requirements

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Récupération des coordonnées GPS
    Par thierrybatlle dans le forum WinDev
    Réponses: 6
    Dernier message: 08/01/2016, 12h11
  2. Base de données optimisée pour coordonnées GPS
    Par Simvetanylen dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 10/03/2015, 17h39
  3. Récupération de coordonnées GPS dans le onCreate
    Par thefranchise dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 16/12/2012, 14h55
  4. [Java] API pour intégrer carte avec coordonnées GPS
    Par Yann_69 dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 12/10/2012, 12h36
  5. [Nouvelle technologie] GPS pour voiture?
    Par Raideman dans le forum Périphériques
    Réponses: 5
    Dernier message: 29/11/2005, 17h58

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