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 :

Géolocalisation google maps


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Géolocalisation google maps
    Bonjour à tous et à toutes,

    Voila j'ai trouvé un tuto sur le net(http://www.touraineverte.com/aide-do...se-postale.htm) pour créer une fonction de géolocalisation sur mon site. 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
    17
    18
    19
    20
    //On creer la map à afficher
           var map = new GMap2(document.getElementById(balise));
     
           //On géolocalise l'adresse transmise
           adresse= "8 rue de la Boetie paris";
           var point;
           var geolocaliseur= new GClientGeocoder();
           geolocaliseur.getLatLng(adresse, function(point){ marker= new GMarker(point)});
           if(!point)
           {
           alert('point null');
           }else
           {
           alert('point pas null');
           }
           map.addControl(new GSmallMapControl());
           map.setCenter(point, 13);  
           map.addOverlay(marker);
     
        }
    J'ai en fait un problème qui vient du fait que je n'ai pas compris le fonctionnement des fonctions callback. Est ce que les coordonnées de mon adresse son placées dans ma variable point? Je ne pense pas car à chaque essaie c'est la fenetre "point null" qui s'ouvre. Dans ce cas comment faire pour placer les coordonnées de mon adresse dans une variables ?
    Je vous remercie

    PS: l'adresse est bonne j'ai verifié sur google map

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Etant donné que certaines fonctions sont exécutées et renvoient leur résultat de manière asynchrone (non bloquant) il est nécessaire de donner une fonction qui recevra l'information de fin d'exécution: c'est le rôle de la fonction de callback ("retour de l'appel").

    point null s'affiche parce que point n'est jamais affecté.
    Il est bien passé en paramètre à la fonction de callback, mais le point que tu testes est celui de la variable var point;

    Sinon ton code est juste, il doit t'afficher un marker.

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bon ben en faisant un petit tour sur le forum je suis tombé sur quelqu'un qui avait le même problème que moi et en m'inspirant de son code je suis parvenu à résoudre mon problème. Je ne comprends pas trop ce qui a changé entre les deux codes et surtout à quel moment ma variable point à reçu une valeur. Je vous mets mon code tel qu'il est (et il fonctionne ) En tout cas merci pour la réponse mais j'ai toujours pas bien saisi le fonctionnement des callback function
    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
     
    //On creer la map à afficher
           var map = new GMap2(document.getElementById(balise));
     
           //On géolocalise l'adresse transmise
           adresse= "8 rue de la Boetie Paris France";
           var point;
           var geolocaliseur= new GClientGeocoder();
     
           if(geolocaliseur)
           {
           		geolocaliseur.getLatLng(adresse, function(point)
           		{
           		if(!point)
           		{
           		alert('adresse non localisée');
           		}else
           		{
           		marker=new GMarker(point);
           		map.addControl(new GSmallMapControl());
           		map.setCenter(point, 13);
           		map.addOverlay(marker);
           		}
           		});
           }

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Effectivement ce n'était qu'une question de réorganisation de ton code. Regarde la différence entre la version originale de ton code (j'ai indenté et commenté pour que tu voies mieux les débuts/ fins des éléments):

    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
           var map = new GMap2(document.getElementById(balise));
     
           //On géolocalise l'adresse transmise
           adresse= "8 rue de la Boetie paris";
           var point;
           var geolocaliseur= new GClientGeocoder();
           geolocaliseur.getLatLng(adresse, 
                  //DEBUT DE LA FONCTION DE CALLBACK
                  function(point){ 
                       marker= new GMarker(point)
                  }//FIN DE LA FONCTION DE CALLBACK
                  ); //FIN DE LA FONCTION geolocaliseur
     
           //ICI point ne correspond pas au point du function(point) du dessus !,
           //mais au var point; du haut. Or celui-ci n'a jamais été affecté !
           if(!point)
           {
              alert('point null');
           }else
           {
              alert('point pas null');
           }
           //CE CODE S'EXECUTE DONC ALORS QUE point NE VAUT RIEN !
           map.addControl(new GSmallMapControl());
           map.setCenter(point, 13);  
           map.addOverlay(marker);
    La fonction de callback n'effectue pas tout le code qu'elle devrait car une partie du code attendu est en dehors !!

    Et c'est ce qui est corrigé dans la nouvelle version que tu utilises:

    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
    var map = new GMap2(document.getElementById(balise));
     
           //On géolocalise l'adresse transmise
           adresse= "8 rue de la Boetie Paris France";
           var point;
           var geolocaliseur= new GClientGeocoder();
     
           if(geolocaliseur)
           {
           		geolocaliseur.getLatLng(adresse, 
                    //DEBUT DE LA FONCTION DE CALLBACK
                    function(point)
                    {
                      if(!point)
                      {
                        alert('adresse non localisée');
                      }else
                      {
                        marker=new GMarker(point);
                        map.addControl(new GSmallMapControl());
                        map.setCenter(point, 13);
                        map.addOverlay(marker);
                      }
                    } //FIN DE LA FONCTION DE CALLBACK
                    ); //FIN DE LA FONCTION geolocaliseur
           }
    Note d'ailleurs que tu peux supprimer il ne sert à rien.

    J'espère que ainsi tu perçois mieux la différence

    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Oui avec l'indentation c'est mieux! C'est bon j'ai compris pourquoi ça ne fonctionnais pas et on ne reprendra pas à fermer une fonction avant qu'elle ait fini de faire ce qu'elle doit faire. Merci beaucoup pour toutes ces explications.

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

Discussions similaires

  1. Intégration de Géolocalisation Google Maps dans une application Android
    Par af.zakaria dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/01/2013, 22h01
  2. [UI Mobile] Géolocalisation google map
    Par maxusn dans le forum jQuery
    Réponses: 9
    Dernier message: 17/10/2012, 11h02
  3. Géolocalisation Google Maps coordonnées visiteur web
    Par Stephane_br dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/10/2012, 18h26
  4. Devis application de géolocalisation google maps
    Par flavdu44 dans le forum Devis
    Réponses: 1
    Dernier message: 15/06/2010, 11h17
  5. [Google Maps] géolocalisation et array
    Par gwena54 dans le forum APIs Google
    Réponses: 2
    Dernier message: 28/09/2007, 00h43

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