Geocodeur
Géocodeur inversé - Comment trouver une adresse postale à partir de coordonnées GPS.
Attention :
L'API Google Maps Javascript Version 2 a été officiellement déclarée obsolète le 19 mai 2010 par Google. Elle continuera, cependant, à fonctionner durant encore trois ans, à compter de cette date, conformément à la politique de dépréciation de Google.
TouraineVerte.com ne diffusera plus de d'exemples ni de tutoriels sur cette version de l'API.
L'API Google Maps Javascript Version 3 est désormais la version officielle.
L'API Google Maps vous permet de retrouver une adresse postale à partir de coordonnées GPS ( Latitude + Longitude ). On nomme cela le géocodage inversé.
Attention : le géocodage inversé n'est pas une science exacte. L'application de géocodage inversé va tenter de trouver l'adresse postale la plus proche, du point ciblé, avec un certain seuil de tolérance. Si aucune correspondance n'est trouvée, le code G_GEO_UNKNOWN_ADDRESS (602) est retourné.
<?xml version="1.0" encoding="utf-8"?>
<!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" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>TouraineVerte.com : Exemples et tutoriels sur l'API Google Maps</title>
<!-- Chargement du script Google AJAX APIs en précisant votre clé -->
<script type="text/javascript" src="http://www.google.com/jsapi?key=Inserez_Votre_Clef_API_Ici"></script>
<script type="text/javascript">
<!--
/* Chargement du module "maps" dans sa version "2.x" */
google.load("maps", "2.x",{"other_params":"sensor=false"});
var maCarte;
var geocodeur;
var address;
/* Fonction initialize() */
function initialize() {
/* Si le navigateur est compatible avec l'API de Google Maps ... */
if (google.maps.BrowserIsCompatible()) {
/* ... Création d'une nouvelle carte nommée "maCarte" qui s'affichera à l'intérieur de la <div> ayant pour identifiant id="EmplacementDeMaCarte" ... */
maCarte = new google.maps.Map2(document.getElementById("EmplacementDeMaCarte"));
/* ... La carte nommée "maCarte" est centrée sur la Latitude 47.38882, la Longitude 0.689392, avec un niveau de zoom égal à 15 ... */
maCarte.setCenter(new google.maps.LatLng(47.38882, 0.689392), 15);
/* ... Ajout à la carte nommée "maCarte" d'un bouton permettant de déplacer et de zoomer la carte ... */
maCarte.addControl(new google.maps.LargeMapControl);
/* ... Ajout à la carte nommée "maCarte" d'un menu déroulant permettant de modifier le type de carte ... */
maCarte.addControl(new google.maps.MenuMapTypeControl());
/* Ajout d'un observateur d'événement à la carte nommée "maCarte" */
/* Lorsqu'un click sera détecté sur la carte nommée "maCarte" alors */
/* "getAddress" sera appelée. */
/* Par défaut, "overlay" et "latlng" sont transmis à "getAdresse" */
GEvent.addListener(maCarte, "click", getAddress);
/* ... Création d'un nouveau géocodeur nommé "geocodeur" ... */
geocodeur = new google.maps.ClientGeocoder();
/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
}else{
/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
}
}
/* Fonction getAddress(overlay, latlng) */
/* overlay : */
/* latlng : */
function getAddress(overlay, latlng) {
/* Si "latlng" n'est pas null ... */
if (latlng != null) {
/* ... alors address = latlng ... */
address = latlng;
/* ... et on demande au géocodeur nommé "geocodeur" de trouver l'adresse postale, en ... */
/* ... envoyant une requête au service de géocodage de Google, correspondant au point ... */
/* ... ayant pour coordonnées "latlng" et, une fois la réponse obtenue, celle-ci sera ... */
/* ... traitée à l'aide de la fonction "showAdress". ... */
geocodeur.getLocations(latlng, showAddress);
}
}
/* Fonction showAddress(response) */
/* response : Réponse retournée par le service de géocodage de Google */
function showAddress(response) {
/* ... Suppression de tous les recouvrements (info-bulles, marqueurs, etc.) présents sur la carte nommée "maCarte" ... */
maCarte.clearOverlays();
/* ... Si la requête envoyée au service de géocodage de Google ne retourne ... */
/* ... aucune réponse, ou que le code de la réponse est différent de "200" ... */
if (!response || response.Status.code != 200) {
/* ... Alors un message d'alerte s'affiche à l'écran, indiquant le code de la réponse ... */
alert("Code Statut : " + response.Status.code);
/* ... Sinon, lorsque la requête envoyée au service de géocodage de Google est ok ... */
} else {
/* ... place = sélection de la première réponse générée par le service de géocodage de Google ... */
place = response.Placemark[0];
/* ... Création d'un point nommé "point" aux latitudes et longitudes de l'adresse postale la plus proche du point cliqué ... */
point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
/* ... Création d'un marqueur nommé marker ancré sur le point "point" ... */
marker = new GMarker(point);
/* ... Affiche sur la carte nommée "maCarte" le marqueur nommé "marker" ... */
maCarte.addOverlay(marker);
/* ... Latitude_Longitude_point_clique = correspond à la longitude et à la latitude du point cliqué ... */
Latitude_Longitude_point_clique = response.name;
/* ... Latitude_La_Plus_Proche_Adresse = correspond à la latitude de l'adresse postale la plus proche du point cliqué ... */
Latitude_La_Plus_Proche_Adresse = place.Point.coordinates[0];
/* ... Longitude_La_Plus_Proche_Adresse = correspond à la longitude de l'adresse postale la plus proche du point cliqué ... */
Longitude_La_Plus_Proche_Adresse = place.Point.coordinates[1];
/* ... Statut_De_La_Requete = Statut de la requête (équivalent aux codes HTML : 200, 400, 500, 601, 602, 603, 604, 610, 620) ... */
Statut_De_La_Requete = response.Status.code;
/* ... Type_De_Requete = indique le type de requête : geocode ... */
Type_De_Requete = response.Status.request;
/* ... Adresse_Postale_Complete = Adresse postale complète la plus proche du point cliqué ... */
Adresse_Postale_Complete = place.address;
/* ... Niveau_De_Precision_Adresse = Niveau de précision de la réponse (code de 0 à 9) ... */
Niveau_De_Precision_Adresse = place.AddressDetails.Accuracy;
/* ... Code_Pays_Adresse = Code du pays correspondant à l'adresse postale la plus proche du point cliqué (FR : France) ... */
Code_Pays_Adresse = place.AddressDetails.Country.CountryNameCode;
/* ... Region_Adresse = Région correspondant à l'adresse postale la plus proche du point cliqué ... */
Region_Adresse = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
/* ... Departement_Adresse = Département correspondant à l'adresse postale la plus proche du point cliqué ... */
Departement_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
/* ... Ville_Adresse = Ville correspondant à l'adresse postale la plus proche du point cliqué ... */
Ville_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
/* ... Rue_Adresse = Rue correspondant à l'adresse postale la plus proche du point cliqué ... */
Rue_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
/* ... Code_Postal_Adresse = Code postal correspondant à l'adresse postale la plus proche du point cliqué ... */
Code_Postal_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
/* ... Ouverture d'une info-bulle ancrée au marqueur nommé "marker" ... */
/* ... et dont on construit le contenu à partir des données ci-dessus ... */
marker.openInfoWindowHtml(
'<b>Latitude, Longitude du point cliqué : </b>' + Latitude_Longitude_point_clique + '<br />' +
'<b>Type de requête : </b>' + Type_De_Requete + '<br />' +
'<b>Status de la requête : </b>' + Statut_De_La_Requete + '<br />' +
'<b>Niveau de précision : </b>' + Niveau_De_Precision_Adresse + '<br />' +
'<b>Latitude adresse : </b>' + Latitude_La_Plus_Proche_Adresse + '<br />' +
'<b>Longitude adresse : </b>' + Longitude_La_Plus_Proche_Adresse + '<br />' +
'<b>Adresse postale : </b>' + Adresse_Postale_Complete + '<br />' +
'<b>Code pays : </b> ' + Code_Pays_Adresse + '<br />' +
'<b>Région : </b> ' + Region_Adresse + '<br />' +
'<b>Département : </b> ' + Departement_Adresse + '<br />' +
'<b>Ville : </b> ' + Ville_Adresse + '<br />' +
'<b>Rue : </b> ' + Rue_Adresse + '<br />' +
'<b>Code postal : </b> ' + Code_Postal_Adresse
);
}
}
/* Appelle la fonction "initialize" lorsque la page web sera chargée */
google.setOnLoadCallback(initialize);
//-->
</script>
</head>
<body>
<!-- La carte nommée "maCarte", va venir s'afficher à l' intérieur de -->
<!-- la balise <div> ayant pour identifiant id="EmplacementDeMaCarte". -->
<!-- Elle fera donc 100% de large et 400 pixels de haut. -->
<div id="EmplacementDeMaCarte" style="width: 100%; height: 400px"></div>
<!-- Si JavaScript n'est pas activé sur votre navigateur, le message d'alerte situé entre les balises <noscript></noscript> s'affichera -->
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il n'est pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<!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" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>TouraineVerte.com : Exemples et tutoriels sur l'API Google Maps</title>
<!-- Chargement du script Google Maps, version 2.x, en précisant votre clé -->
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2.x&key=Inserez_Votre_Clef_API_Ici&sensor=false"></script>
<script type="text/javascript">
<!--
var maCarte;
var geocodeur;
var address;
/* Fonction initialize() */
function initialize() {
/* Si le navigateur est compatible avec l'API de Google Maps ... */
if (GBrowserIsCompatible()) {
/* ... Création d'une nouvelle carte nommée "maCarte" qui s'affichera à l'intérieur de la <div> ayant pour identifiant id="EmplacementDeMaCarte" ... */
maCarte = new GMap2(document.getElementById("EmplacementDeMaCarte"));
/* ... La carte nommée "maCarte" est centrée sur la Latitude 47.38882, la Longitude 0.689392, avec un niveau de zoom égal à 15 ... */
maCarte.setCenter(new GLatLng(47.38882, 0.689392), 15);
/* ... Ajout à la carte nommée "maCarte" d'un bouton permettant de déplacer et de zoomer la carte ... */
maCarte.addControl(new GLargeMapControl);
/* ... Ajout à la carte nommée "maCarte" d'un menu déroulant permettant de modifier le type de carte ... */
maCarte.addControl(new GMenuMapTypeControl());
/* Ajout d'un observateur d'événement à la carte nommée "maCarte" */
/* Lorsqu'un click sera détecté sur la carte nommée "maCarte" alors */
/* "getAddress" sera appelée. */
/* Par défaut, "overlay" et "latlng" sont transmis à "getAdresse" */
GEvent.addListener(maCarte, "click", getAddress);
/* ... Création d'un nouveau géocodeur nommé "geocodeur" ... */
geocodeur = new GClientGeocoder();
/* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
}else{
/* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
}
}
/* Fonction getAddress(overlay, latlng) */
/* overlay : */
/* latlng : */
function getAddress(overlay, latlng) {
/* Si "latlng" n'est pas null ... */
if (latlng != null) {
/* ... alors address = latlng ... */
address = latlng;
/* ... et on demande au géocodeur nommé "geocodeur" de trouver l'adresse postale, en ... */
/* ... envoyant une requête au service de géocodage de Google, correspondant au point ... */
/* ... ayant pour coordonnées "latlng" et, une fois la réponse obtenue, celle-ci sera ... */
/* ... traitée à l'aide de la fonction "showAdress". ... */
geocodeur.getLocations(latlng, showAddress);
}
}
/* Fonction showAddress(response) */
/* response : Réponse retournée par le service de géocodage de Google */
function showAddress(response) {
/* ... Suppression de tous les recouvrements (info-bulles, marqueurs, etc.) présents sur la carte nommée "maCarte" ... */
maCarte.clearOverlays();
/* ... Si la requête envoyée au service de géocodage de Google ne retourne ... */
/* ... aucune réponse, ou que le code de la réponse est différent de "200" ... */
if (!response || response.Status.code != 200) {
/* ... Alors un message d'alerte s'affiche à l'écran, indiquant le code de la réponse ... */
alert("Code Statut : " + response.Status.code);
/* ... Sinon, lorsque la requête envoyée au service de géocodage de Google est ok ... */
} else {
/* ... place = sélection de la première réponse générée par le service de géocodage de Google ... */
place = response.Placemark[0];
/* ... Création d'un point nommé "point" aux latitudes et longitudes de l'adresse postale la plus proche du point cliqué ... */
point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
/* ... Création d'un marqueur nommé marker ancré sur le point "point" ... */
marker = new GMarker(point);
/* ... Affiche sur la carte nommée "maCarte" le marqueur nommé "marker" ... */
maCarte.addOverlay(marker);
/* ... Latitude_Longitude_point_clique = correspond à la longitude et à la latitude du point cliqué ... */
Latitude_Longitude_point_clique = response.name;
/* ... Latitude_La_Plus_Proche_Adresse = correspond à la latitude de l'adresse postale la plus proche du point cliqué ... */
Latitude_La_Plus_Proche_Adresse = place.Point.coordinates[0];
/* ... Longitude_La_Plus_Proche_Adresse = correspond à la longitude de l'adresse postale la plus proche du point cliqué ... */
Longitude_La_Plus_Proche_Adresse = place.Point.coordinates[1];
/* ... Statut_De_La_Requete = Statut de la requête (équivalent aux codes HTML : 200, 400, 500, 601, 602, 603, 604, 610, 620) ... */
Statut_De_La_Requete = response.Status.code;
/* ... Type_De_Requete = indique le type de requête : geocode ... */
Type_De_Requete = response.Status.request;
/* ... Adresse_Postale_Complete = Adresse postale complète la plus proche du point cliqué ... */
Adresse_Postale_Complete = place.address;
/* ... Niveau_De_Precision_Adresse = Niveau de précision de la réponse (code de 0 à 9) ... */
Niveau_De_Precision_Adresse = place.AddressDetails.Accuracy;
/* ... Code_Pays_Adresse = Code du pays correspondant à l'adresse postale la plus proche du point cliqué (FR : France) ... */
Code_Pays_Adresse = place.AddressDetails.Country.CountryNameCode;
/* ... Region_Adresse = Région correspondant à l'adresse postale la plus proche du point cliqué ... */
Region_Adresse = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
/* ... Departement_Adresse = Département correspondant à l'adresse postale la plus proche du point cliqué ... */
Departement_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
/* ... Ville_Adresse = Ville correspondant à l'adresse postale la plus proche du point cliqué ... */
Ville_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
/* ... Rue_Adresse = Rue correspondant à l'adresse postale la plus proche du point cliqué ... */
Rue_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
/* ... Code_Postal_Adresse = Code postal correspondant à l'adresse postale la plus proche du point cliqué ... */
Code_Postal_Adresse = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
/* ... Ouverture d'une info-bulle ancrée au marqueur nommé "marker" ... */
/* ... et dont on construit le contenu à partir des données ci-dessus ... */
marker.openInfoWindowHtml(
'<b>Latitude, Longitude du point cliqué : </b>' + Latitude_Longitude_point_clique + '<br />' +
'<b>Type de requête : </b>' + Type_De_Requete + '<br />' +
'<b>Status de la requête : </b>' + Statut_De_La_Requete + '<br />' +
'<b>Niveau de précision : </b>' + Niveau_De_Precision_Adresse + '<br />' +
'<b>Latitude adresse : </b>' + Latitude_La_Plus_Proche_Adresse + '<br />' +
'<b>Longitude adresse : </b>' + Longitude_La_Plus_Proche_Adresse + '<br />' +
'<b>Adresse postale : </b>' + Adresse_Postale_Complete + '<br />' +
'<b>Code pays : </b> ' + Code_Pays_Adresse + '<br />' +
'<b>Région : </b> ' + Region_Adresse + '<br />' +
'<b>Département : </b> ' + Departement_Adresse + '<br />' +
'<b>Ville : </b> ' + Ville_Adresse + '<br />' +
'<b>Rue : </b> ' + Rue_Adresse + '<br />' +
'<b>Code postal : </b> ' + Code_Postal_Adresse
);
}
}
//-->
</script>
</head>
<!-- Une fois la page chargée la fonction initialize() est exécutée. -->
<!-- A la fermeture de la page , la fonction GUnload() est exécutée. -->
<body onload="initialize()" onunload="GUnload()">
<!-- La carte nommée "maCarte", va venir s'afficher à l' intérieur de -->
<!-- la balise <div> ayant pour identifiant id="EmplacementDeMaCarte". -->
<!-- Elle fera donc 100% de large et 400 pixels de haut. -->
<div id="EmplacementDeMaCarte" style="width: 100%; height: 400px"></div>
<!-- Si JavaScript n'est pas activé sur votre navigateur, le message d'alerte situé entre les balises <noscript></noscript> s'affichera -->
<noscript>
<p>Attention : </p>
<p>Afin de pouvoir utiliser Google Maps, JavaScript doit être activé.</p>
<p>Or, il semble que JavaScript est désactivé ou qu'il n'est pas supporté par votre navigateur.</p>
<p>Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis essayez à nouveau.</p>
</noscript>
</body>
</html>