Transformer une adresse en coordonnées géographiques avec le service Geocoding de Google Maps
Google Maps propose une API Javascript largement utilisée aujourd'hui par de nombreux sites. Cet API permet d'intégrer des cartes facilement.
Google Maps propose également un autre service de géocoding, cette fois ci non pas en Javascript mais sous la forme d'un service web REST. Son utilisation est simplissime, et d'une puissance incroyable. Un exemple tout simple consiste à récupérer les coordonnées géographiques (latitude, longitude) correspondant à une adresse.
Voici un exemple en PHP. Il requiert une clé Google Maps pour fonctionner.
/**
* Recherche les coordonnées d'une adresse avec le service Google Maps
* @param adresse string
* @return array(id_result => array(adresse_complete, latitude, longitude))
*/
function get_coordonees_from_adresse($adresse)
{
$adresse = urlencode($adresse);
$url = 'http://maps.google.com/maps/geo?q=' . $adresse . '&output=xml&oe=utf8&gl=fr&sensor=false&key=' . GMAP_KEY;
$page = file_get_contents($url);
// Parse le résultat XML
$xml_result = new SimpleXMLElement($page);
// Vérifie que la requête a réussi
if ($xml_result->Response->Status->code != 200) return array();
// Charge les adresses
$adresses = array();
foreach ($xml_result->Response->Placemark as $place) {
list($longitude, $latitude, $altitude) = explode(',', $place->Point->coordinates);
// Ajoute au tableau
$adresses[] = array('adresse_complete' => utf8_decode($place->address),
'latitude' => $latitude,
'longitude' => $longitude);
}
return $adresses;
}
Cette fonction renvoie un tableau contenant, pour chaque résultat (il peut y'en avoir plusieurs en cas d'ambiguité) l'adresse trouvée (pratique pour différencier plusieurs résultats) et la latitude/longitude.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :