Geocodage avec Google Maps en php - PHP - Programmation
Marsh Posté le 01-06-2007 à 17:08:05
Je ne vois pas du tout en quoi c'est illégal! Si quelqu'un peut m'éclairer la dessus aussi.. lol
Marsh Posté le 01-06-2007 à 18:16:28
Récuperer des données à l'insu d'un individu est illegal ^^ Surtout que ces données n'appartiennent certainement pas à Google
Marsh Posté le 02-06-2007 à 02:11:59
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 |
Marsh Posté le 04-06-2007 à 20:34:37
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.
Marsh Posté le 05-06-2007 à 11:39:04
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
Marsh Posté le 05-06-2007 à 17:02:59
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).
Marsh Posté le 11-06-2007 à 15:25:31
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
Marsh Posté le 27-06-2007 à 15:55:31
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
Marsh Posté le 19-07-2007 à 13:56:22
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
Marsh Posté le 31-07-2008 à 12:51:35
Grumo2 a écrit : Bonjour, |
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
Marsh Posté le 31-07-2008 à 13:00:59
super le stage, faire des copier coller
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.
Marsh Posté le 06-02-2009 à 19:48:02
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.
Marsh Posté le 06-02-2009 à 19:50:58
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
Marsh Posté le 07-02-2009 à 01:15:36
Alisteroid a écrit : super le stage, faire des copier coller |
Lol mais c'est pas possible ils sont tous nuls à supinfo
Marsh Posté le 22-02-2009 à 17:21:11
@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 )
Marsh Posté le 24-02-2009 à 22:42:22
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 : |
Et quel "pattern" tu appliquerais pour avoir la précision (ligne 3, cf ci-dessous) ? Sachant que le XML ressemble à ceci:
Code :
|
Marsh Posté le 01-06-2007 à 12:05:53
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