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 :

Expérience géocodage


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut Expérience géocodage
    Bonjour,
    J'ai essayé googlemap en lui envoyant une adresse dans un fichier php(l'exemple basique).Maintenant je veux aller plus loin et je rencontre un leger pb. Je récupère mes données d'une base Mysql et je les récupère dans un fichier xml puis les parses ensuite pour les envoyer à au geocodeur de googlemap. mais j'ai en retour une page avec la carte mais sans les marqueurs.j'ai une alert en javascript"null not found". message explicite,mais un peu étonnant puisaue c'est les mêmes adresses que j'ai essayé individuellment dans mon exemple basique. Je suis sur lycos(gratuit). J'ai testé le fichier xml, il bien rempli.
    voici mes sources:
    la page principale:index.html
    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
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <title>GoogleMap,php & mysql</title>
    <head>
    <!immport de la librairie google en utilisant la clé. cette librairie est fournie par la classe GMap2>
     <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAAbzRrg6xEmV5lgEvzTucjJxTbbWD8NRdNNmVtZnHkcgYVQ52YvBRgLjpW7CsQZaB3ot74TuZtcTIuxw" type="text/javascript"></script>
      </head>
     
        <script type="text/javascript">
            //<![CDATA[
     
    function load() {
          if (GBrowserIsCompatible()) {<!--si le navigateur est compatible -->
     
            var map = new GMap2(document.getElementById("map")); <!--instanciation de l'objet GMap2 (la carte ) qui fournit les methodes getLatLng pour le géocodage-->
            map.addControl(new GSmallMapControl());<!--ajout des controles de zoom et déplacement au format mini-->
               map.addControl(new GMapTypeControl());
            map.setCenter(new GLatLng (49.3 , -1.4), 10);<!--positionnement initial de la map (ici la france) -->
            geocoder = new GClientGeocoder();<!--création de l'objet geocoder (nécessaire pour la localisation des adresse)-->
     
            //chargement du fichier xml généré par un script php
                GDownloadUrl("http://membres.lycos.fr/geolocalisation/exportToXML.xml", function(exportToXML,responseCode) {
              var xml = GXml.parse(exportToXML);
              var markers = xml.documentElement.getElementsByTagName("marker");
     
              for (var i = 0; i <markers.length; i++) {<!--parcours du fichier xml pour récupérer les différentes adresses-->
                    var adresse =markers[i].getAttribute("adresse");
                    var ville = markers[i].getAttribute("ville");
                    var codePostale = markers[i].getAttribute("codePostale");
                    var pays = markers[i].getAttribute("pays");
                     showAddress(adresse,ville,codePostale,pays);<!--geocodage des adresses et ajout de markers à la carte par la fonction showAddress-->
              }
            });
          }
     
    }
     
     
    function showAddress(address) {
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
          <!--centrer la carte sur le point-->
            map.setCenter(point, 13);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            marker.openInfoWindowHtml(address);
                return marker;
              }
        }
      );
     
    }
     
     
     
        //]]>
     </script>
       <body onload="load()" onunload="GUnload()"> 
      <!--l'endroit où la carte sera déssinée est prédimensionné-->
        <div id="map" style="width:600px;height:400px"></div>    
     
        <script type="text/javascript">    document.write(pays); </script>
        </body>
        </html>
    le fichier de connexion à la base de donnée et création du xml
    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
     
    <?php  //header ('Content-Type: text/html; charset=utf-8;');
    //Start XML file, create parent node
     
    $xml = '<?xml version="1.0" encoding="utf-8"?>'.'<markers>';
     
       // Connect to the MySQL database
       $conn = mysql_connect("localhost", "geolocalisation", "");
     
       // Select the database
       $db = mysql_select_db("geolocalisation_fr_db");
     
       // Query the table
       $query = "SELECT  * FROM geocodes";
       $result = mysql_query($query) or die(mysql_error("requ鳥 echec"));
       //header("Content-type: text/xml");
     
     
     
     
       //Loop through each row, submit HTTP request, output coordinates
       //echo "<table border='2'><tr><th>Adresse<th>Ville<th>Pays<th>Longitude<th>Latitude</tr>";
       // Iterate through the rows, printing XML nodes for each
     
       while ($row = mysql_fetch_array($result)){
     
     $xml .= '<marker>';
     $xml .= '<adresse>'.$row['adresse'].'</adresse>';
     $xml .= '<ville>'.$row['ville'].'</ville>';
    $xml .= '<codePostale>'.$row['codePostale'].'</codePostale>';
     $xml .= '<pays>'.$row['pays'].'</pays>';
    $xml .= '</marker>'; 
    } 
     
    $xml .= '</markers>';
     
       $fp = fopen("exportToXML.xml", 'w+');
         fputs($fp, $xml);
        fclose($fp);
     
    echo 'Export XML effectue !<br><a href="exportToXML.xml">Voir le fichier</a>';
     
    ?>
    merci de votre disponibilité

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    j'ai trouvé l'origine du pb. le paramètre de la fonction showAddress(address) est nul: address=nul. ce qui voudrait dire que peut-être mes donées sont mal parsées. du coup le fonction qui doit faire appelle au geocodeur de google reçoit un paramètre null. si quelqu'un trouve la solution à mon problème, je suis preneur.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut,
    mon prolème n'est toujours pas résolu. Après avoir corrigé une erreur dans mon code(rajouter le mot clé "var" avant la variable geocoder) j'ai n'ai plus l'alerte "adresse non géocodée"(dans le code que j'ai posté c'est le message "not found"). La carte initiale s'affiche, sans plus.
    si quelqu'un sait pourquoi....merci de m'éclairer

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    n'ayant pas résolu mon problème je reviens à a charge.
    Mon code arrive seulement à afficher la carte initaile. Quand j'envoie des adresses par un fichier php que je récupèrent dans une base de donée mysql, alors là rien ne se produit. J'ai aucun message d'erreur qui puisse m'aider. je fais mes test sur lycos(gratuit). je mets mon code pour que vous voyiez.
    la page d'accueil
    index.html
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <title>GoogleMap,php & mysql</title>
    <head>
    <!--immport de la librairie google en utilisant la clé. cette librairie est fournie par la classe GMap2-->
    	 <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=ABQIAAAAbzRrg6xEmV5lgEvzTucjJxTbbWD8NRdNNmVtZnHkcgYVQ52YvBRgLjpW7CsQZaB3ot74TuZtcTIuxw" type="text/javascript"></script>
    </head>
     
     
     
     
    	<script type="text/javascript">
        	//<![CDATA[
     
    function load() {
          if (GBrowserIsCompatible()) {<!--si le navigateur est compatible -->
     
     
            var map = new GMap2(document.getElementById("map")); <!--instanciation de l'objet GMap2 (la carte ) qui fournit les methodes getLatLng pour le géocodage-->
            map.addControl(new GLargeMapControl());
            //map.addControl(new GSmallMapControl());<!--ajout des controles de zoom et déplacement au format mini-->
           	map.addControl(new GMapTypeControl());
            map.setCenter(new GLatLng (46.38 , 0.20), 10);<!--positionnement initial de la map (ici la france) -->
           // var geocoder = new GClientGeocoder();<!--création de l'objet geocoder (nécessaire pour la localisation des adresse)-->
     
                 	for (i=0;i<tableau.length;i++){
                	showAddress(<?php 
                    echo ($address.','.$city.','.$postalCode.','.$counry)?>);
             		}
     
            }
        } 
     
     
     
     
     
     
     
    function showAddress(address) {
    var geocoder = new GClientGeocoder();
      geocoder.getLocations(
        address,
        function(point) {
          if (!point) {
            alert(address + " adresse non géocodée");
          } else {
    	  <!--centrer la carte sur le point-->
            map.setCenter(point, 15);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            marker.openInfoWindowHtml(address);
     
    	      }
        }
      );
     
    }
     
     
     
    	//]]>
     </script>
      <body onload="load()" onunload="GUnload()"> 
     <?php
     
     // Connect to the MySQL database
       $conn = mysql_connect("localhost", "geolocalisation", "");
     
       // Select the database
       $db = mysql_select_db("geolocalisation_fr_db");
     
       // Query the table
       $query = "SELECT  * FROM geocodes";
       $result = mysql_query($query) or die(mysql_error("requ? echec"));
        $tableau=new Array();
        $i=0;
       while ($row = mysql_fetch_array($result)){
       $address=$row["adresse"];
       $city=$row["ville"];
       $country=$row["pays"];
       $postalcod=$row["codepostale"];
       $tableau["$i"]=($address.','.$city.','.$postalCode.','.$country);
       echo $city;
        }
     
       ?>
     
      			<!--l'endroit où la carte sera déssinée est prédimensionné-->
    				<div id="map" style="width:800px;height:600px"></div>	
     
    			<form action="geocodage.php" method=POST>
    					<input type="submit" value="Envoyer" name="adresse">
    			</form>
     
    </body>
    </html>
    le fichier php qui envoie les données
    geocodage.php
    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
     
     
      <?php
     
     // Connect to the MySQL database
       $conn = mysql_connect("localhost", "geolocalisation", "");
     
       // Select the database
       $db = mysql_select_db("geolocalisation_fr_db");
     
       // Query the table
       $query = "SELECT  * FROM geocodes where id =1";
       $result = mysql_query($query) or die(mysql_error("requête  echec"));
        $tableau=Array();
        $i=0;
     
     
       while ($row = mysql_fetch_array($result)){
       $address=$row["adresse"];
       $city=$row["ville"];
       $country=$row["pays"];
       $postalCode=$row["codePostale"];
       $tableau[$i]=($address.",".$postalCode.",".$city.",".$country);
       //echo" var address=".' " '.$tableau[$i].' " '.";"."<br>";
       //echo "showAddress(address);";
       $i=$i+1;
    $url = 'http://maps.google.fr/maps?f=q&hl=fr&q='.urlencode($address).','.urlencode(''.$postalCode.' '.$city);
        }
     
    	header('HTTP/1.1 204 No Content');
    	header('Location: '.$url);
     
       ?>
    voilà si quelqu'un a une idée, elle est la bien venue

Discussions similaires

  1. [Débat] Expériences au sujet de .NET
    Par DevX dans le forum Débats sur le développement - Le Best Of
    Réponses: 46
    Dernier message: 25/05/2014, 11h16
  2. [Expérience] Senior, junior, etc...
    Par Glob dans le forum Emploi
    Réponses: 7
    Dernier message: 06/08/2004, 22h27
  3. Retour d'expérience ?
    Par jIdJo dans le forum Maven
    Réponses: 1
    Dernier message: 05/11/2003, 08h33

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