Géolocaliser une adresse postale avec le service Geocoding de Google

Pour géolocaliser une adresse physique sur internet, Google nous donne accès à plusieurs services gratuits. La plupart nécessitent javascript pour être utilisé.

Nous allons nous intéresser au service Geocoding qui est un service RPC supportant plusieurs standard en sortie. Nous allons utiliser JSON puisque c’est le format par défaut.

Ce service permet donc de faire du simple Geocoding : transformer une adresse physique en coordonnées. Il peut également faire l’inverse.

Voici un bout de code vous permettant de faire fonctionner le service avec un formulaire :

ini_set('error_reporting',E_ALL);
ini_set('display_errors','On');
if(isset($_GET['addr'])){
	// Requête sur l'API de google ( http://code.google.com/intl/fr/apis/maps/documentation/geocoding/index.html )
	$a = utf8_encode( file_get_contents( 'http://maps.google.com/maps/geo?output=json&q='. strip_tags( urlencode( $_GET['addr'] ) ) ) );
	// Il existe plusieurs format de sortie. Pour JSON, assurez vous d'avoir l'extension json sur votre machine
	$geoResponse = json_decode( $a,true );
	if( isset( $geoResponse['Status']['code'] , $geoResponse['Placemark'][0]['Point']['coordinates'] ) && $geoResponse['Status']['code'] == '200' ){
		echo '<h1>Coordonnées GPS de : ' . strip_tags( $_GET['addr'] ) . '</h1>
		echo 'Lat: ' . $geoResponse['Placemark'][0]['Point']['coordinates'][1] . '';
		echo 'Lon: ' . $geoResponse['Placemark'][0]['Point']['coordinates'][0] ;
	}
}
?>

Notez qu’il existe plusieurs code de statut. J’ai filtré sur le 200, il correspond à : « tout est ok… ».
Il serait également intéressant d’analyser la précision des coordonnées retournées.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Spam Quiz: