Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
990 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Geocodage avec Google Maps en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Geocodage avec Google Maps en php

n°1568528
Grumo2
Posté le 01-06-2007 à 12:05:53  profilanswer
 

Bonjour,
 
Je travaille actuellement sur un applui google maps. Mon problème est de réaliser le script de geocodage.
En effet, je recupere les données d'adresses ds ma basse de données, je cherche une fonction google maps qui me permettrait de geocoder toutes les adresses et de récuperer la latitude et la longitude, pour ensuite les enregistrer dans ma base de données. Mon appli google maps allant dja pioché dans ma base de données pour afficher les marker de chaque adresse.
 
J'ai trouvé cette function :
function get_lat_long($q) {
   $gm = fopen('http://maps.google.com/maps?q=' . str_replace('
','+',$q) . '&output=js','r');
   $tmp = @fread($gm,30000);
   fclose($gm);
   $x = preg_replace ('/.*<point lat="([^"]*)" lng="([^"]*)".*/',
"|$1|$2|", nl2br(trim($tmp)));
   list ($dmy,$lat_value, $lng_value) = explode ("|",$x );
   return(array('latitude'=>$lat_value,'longitude'=>$lng_value));
 
}  
 
Mais apparemment la latitude qu'elle renvoit est une chaine de caractère et la longitude renvoit un objet NULL.
Quelqu'un pourrait t"il m'aider ?
 
Merci

mood
Publicité
Posté le 01-06-2007 à 12:05:53  profilanswer
 

n°1568545
Mxtrem
Posté le 01-06-2007 à 12:26:44  profilanswer
 

C'est totalement illégal :/

n°1568547
Grumo2
Posté le 01-06-2007 à 12:40:43  profilanswer
 

Pourquoi dis tu que c'est illegal?

n°1568730
Grumo2
Posté le 01-06-2007 à 17:08:05  profilanswer
 

Je ne vois pas du tout en quoi c'est illégal! Si quelqu'un peut m'éclairer la dessus aussi.. lol

n°1568759
Mxtrem
Posté le 01-06-2007 à 18:16:28  profilanswer
 

Récuperer des données à l'insu d'un individu est illegal ^^ Surtout que ces données n'appartiennent certainement pas à Google :)

n°1568891
HouseMD
Posté le 02-06-2007 à 02:11:59  profilanswer
 

Mxtrem a écrit :

Récuperer des données à l'insu d'un individu est illegal ^^ Surtout que ces données n'appartiennent certainement pas à Google :)


[:pingouino]

n°1570002
thev
Posté le 04-06-2007 à 20:34:37  profilanswer
 

J'ai réalisé une application de ce genre. Voici ce que j'ai écrit pour récupérer le géocode :
 
 // Formatting address : only lower alphanumeric without accent and only one separator space        
     $address = strtolower($address);
     $search  = array("/[^[:alnum:][:space:]']/","/[[:space:]]+/","/à/", "/é/", "/è/", "/ù/", "/ç/" ) ;
     $replace = array("", " ", "a", "e", "e", "u", "c" ) ;
     $address = preg_replace($search, $replace, $address);
 
 
        // geocode search in  Yahoo maps
        $url = 'http://api.local.yahoo.com/MapsService/V1/geocode';
        $url .= sprintf('?appid=%s&location=%s',$yahooappid,rawurlencode($address));
 
        $result = false;
        if($result = file_get_contents($url)) {
 
               preg_match('!<Latitude>(.*)</Latitude><Longitude>(.*)</Longitude>!U', $result, $match);
 
               if ( isset($match) )  {
 
                 // Obtain the geocode
                 $geocode = array('latitude'  =>  $match[1],
                                  'longitude' =>  $match[2]);
  }          
 
 }
 
J'ai en fait utilisé l'API de Yahoomaps qui me donnait de meilleurs résultats que celle de Googlemaps.

n°1570216
Grumo2
Posté le 05-06-2007 à 11:39:04  profilanswer
 

function get_lat_long($q) {
   $gm = fopen('http://maps.google.com/maps?q=' . str_replace('
','+',$q) . '&output=js','r');
   $tmp = @fread($gm,30000);
   fclose($gm);
   $x = preg_replace ('/.*<point lat="([^"]*)" lng="([^"]*)".*/',
"|$1|$2|", nl2br(trim($tmp)));
   list ($dmy,$lat_value, $lng_value) = explode ("|",$x );
   return(array('latitude'=>$lat_value,'longitude'=>$lng_value));
 
}  
 
Donc en fait avec ma fonction je reconstruit l'URL que Google Maps envoit pour faire une rechercher. Voici un exemple d'adresse :
http://maps.google.fr/maps?f=q&hl= [...] e=UTF8&ll=48.825145,2.349631&spn=0.000773,0.002537&t=k&om=1
 
Donc la recherche etait pour l'adresse: 87 rue bobillot à paris  
Et donc Google Maps renvoit dans l'URL la latitude et la longitude.
 
Mon problème est de savoir ce qui ne va pas avec ma fonction au niveau de la creation de l'URL et également de savoir comment récuperer la latitude et la longitude dans l'URL.
 
Merci beaucoup

n°1570456
thev
Posté le 05-06-2007 à 17:02:59  profilanswer
 

Je ne suis pas certain que l'URL de l'API Géocode de Google Maps soit de la même forme que celle de la recherche (http://maps.google.fr/maps?f=q&hl= [...] e=UTF8&ll=48.825145,2.349631&spn=0.000773,0.002537&t=k&om=1).  
En d'autres termes, il me semble que tu ne peux pas utiliser l'URL de recherche pour récupérer un géocode, il faut utiliser une API. Et d'ailleurs, il me revient que dans les paramètres de l'API, il est nécessaire de fournir un identifiant d'application obtenu après inscription sur le Web. Cette inscription est gratuite mais c'est une étape préalable nécessaire.
 
D'autre part,comme je l'ai déjà indiqué, j'avais commencé par utiliser l'API Google Maps et j'avais constaté qu'un certain nombre de villes n'était pas reconnu et que j'obtenais de meilleurs résultats avec l'API de Yahoo. Je pense donc qu'il vaut mieux utiliser Yahoo à moins que Google ait amélioré son API depuis mes tests (= août 2006).    

n°1573277
Grumo2
Posté le 11-06-2007 à 15:25:31  profilanswer
 

Bonjour,
 
Bon j'ai réussi! Si mon script interesse quelqu'un no problem. J'ia juste un probleme. Ma fonction geocode parfaitement sur paris mais des que je passe en region il ne trouve plus rien alors qu'en copiant/collant mes adresses directement dans Google Maps il me les trouve tout de suite..
 
Quelqu'un a t'il une idée?
Merciii

mood
Publicité
Posté le 11-06-2007 à 15:25:31  profilanswer
 

n°1579975
gosty is b​ack
:::....Force & Honneur....:::
Posté le 27-06-2007 à 15:55:31  profilanswer
 

salut,
 
ouais moi je serai interessé, le probleme est que je ne comprends pas grand chose pour le moment.
 
en fait je cherche à faire :
 
quand un membre s'inscrit sur mon site il donne son cp, sa ville, son pays, avec ça je veux automatiquement ajouter sa position sur google maps, est-ce possible ?
quelqu'un connait un tuto en français qui expliquerait ça ?
 
merci

n°1582471
gosty is b​ack
:::....Force & Honneur....:::
Posté le 04-07-2007 à 15:50:16  profilanswer
 

petit up pour savoir si quelqu'un à la soluce ?

n°1588781
Mxtrem
Posté le 19-07-2007 à 13:56:22  profilanswer
 

Evidement, il faut ragarder par le biais de Geoname (je crois), qui trouve la latitude / longitude en fonction du code postal.
Tu incrémente lat & lon dans une bdd puis tu affiches les valeurs dans l'api gogole map :)

n°1767244
gaerebut
Posté le 31-07-2008 à 12:51:35  profilanswer
 

Grumo2 a écrit :

Bonjour,
 
Bon j'ai réussi! Si mon script interesse quelqu'un no problem. J'ia juste un probleme. Ma fonction geocode parfaitement sur paris mais des que je passe en region il ne trouve plus rien alors qu'en copiant/collant mes adresses directement dans Google Maps il me les trouve tout de suite..
 
Quelqu'un a t'il une idée?
Merciii


 
 
Bonjour, je suis en train de faire un projet pour une grande entreprise ou je suis en stage depuis peu et j'ai absolument besoin de votre code!  lol
 
Si vous pouviez me l'envoyer à mon adresse mail perso : gaerebut@supinfo.com
 
merci à vous et bravo pour votre code  ;)

n°1767247
Alisteroid
Posté le 31-07-2008 à 13:00:59  profilanswer
 

super le stage, faire des copier coller  [:cytrouille]
T'es pas censé apprendre à faire toi même ces choses et à te dépatouiller  :??: et upper un topic qui a un an pour demander à ce qu'on te torche le travail, c'est limite...
Bref jete un oeil a l'api de google maps... et tu seras content d'y être arrivé seul, y a rien de bien difficile.

Message cité 1 fois
Message édité par Alisteroid le 31-07-2008 à 13:38:34
n°1848148
dudule142
Posté le 06-02-2009 à 19:48:02  profilanswer
 

Mxtrem a écrit :

Récuperer des données à l'insu d'un individu est illegal ^^ Surtout que ces données n'appartiennent certainement pas à Google :)


 
 
C'est pas illégal, c'est à ça que ça serre un WebService.

n°1848151
dudule142
Posté le 06-02-2009 à 19:50:58  profilanswer
 

ne copie colle pas les donnés dans une base a toi (sauf si c un cas particulier) tu peux utiliser les données de google directement.
 
voici une page qui explique bien (avec des exemples) comment utiliser l'API google. c'est fait pour ça...
 
http://code.google.com/intl/fr/api [...] vices.html

n°1848233
Ricco
Retour au pays
Posté le 07-02-2009 à 01:15:36  profilanswer
 

Alisteroid a écrit :

super le stage, faire des copier coller  [:cytrouille]  
T'es pas censé apprendre à faire toi même ces choses et à te dépatouiller  :??: et upper un topic qui a un an pour demander à ce qu'on te torche le travail, c'est limite...
Bref jete un oeil a l'api de google maps... et tu seras content d'y être arrivé seul, y a rien de bien difficile.


 
Lol mais c'est pas possible ils sont tous nuls à supinfo  :pfff:  


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1853958
spamoi
Posté le 22-02-2009 à 17:21:11  profilanswer
 

@thev : merci pour le bout de code pour yahoo maps, ça fonctionne bien :)
 
Selon toi, quel est le meilleur géocodeur ? google ou yahoo ? (avec google, sur + de 2000 adresses, j'ai 10% d'erreurs :( )
 
 
 :hello:

n°1854843
spamoi
Posté le 24-02-2009 à 22:42:22  profilanswer
 

thev a écrit :

J'ai réalisé une application de ce genre. Voici ce que j'ai écrit pour récupérer le géocode :
 
 // Formatting address : only lower alphanumeric without accent and only one separator space        
     $address = strtolower($address);
     $search  = array("/[^[:alnum:][:space:]']/","/[[:space:]]+/","/à/", "/é/", "/è/", "/ù/", "/ç/" ) ;
     $replace = array("", " ", "a", "e", "e", "u", "c" ) ;
     $address = preg_replace($search, $replace, $address);
 
 
        // geocode search in  Yahoo maps
        $url = 'http://api.local.yahoo.com/MapsService/V1/geocode';
        $url .= sprintf('?appid=%s&location=%s',$yahooappid,rawurlencode($address));
 
        $result = false;
        if($result = file_get_contents($url)) {
 
               preg_match('!<Latitude>(.*)</Latitude><Longitude>(.*)</Longitude>!U', $result, $match);
 
               if ( isset($match) )  {
 
                 // Obtain the geocode
                 $geocode = array('latitude'  =>  $match[1],
                                  'longitude' =>  $match[2]);
  }          
 
 }
 
J'ai en fait utilisé l'API de Yahoomaps qui me donnait de meilleurs résultats que celle de Googlemaps.


 
Et quel "pattern" tu appliquerais pour avoir la précision (ligne 3, cf ci-dessous) ? Sachant que le XML ressemble à ceci:
 

Code :
  1. <ResultSet xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsSer [...] &#034;&gt;
  2. <Result precision="address">
  3. <Latitude>4xxxx</Latitude>
  4. <Longitude>2xxx</Longitude>
  5. <Address>34, place xxxx</Address>
  6. <City>18xxxxxx</City>
  7. <State>France</State>
  8. <Zip/>
  9. <Country>FR</Country>
  10. </Result>
  11. </ResultSet>
  12. <!--
  13. ws03.search.re2.yahoo.com compressed/chunked Tue Feb 24 13:21:15 PST 2009
  14. -->


 
 
 :ange:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Geocodage avec Google Maps en php

 

Sujets relatifs
google adsenseGoogle video
Google summer of code 2007Validation incorrecte au W3c "google analytic"
Google Map + Ancre htmlProbleme avec sitemap de google !!!!
Google map : points multiples[Google Maps] Est-il possible de faire un zoom "continu"?
[Résolu]Intégration d'une carte google sur mon site 
Plus de sujets relatifs à : Geocodage avec Google Maps en php


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)