Api Google Maps Version 2
Geocodeur
GÉOCODER UNE ADRESSE AVEC JAVASCRIPT GCLIENTGEOCODER GETLOCATIONS

Api Google Maps Version 2  flèche Geocodeur  flèche Géocoder et/ou suggérer des adresses - GClientGeocoder getLocations.

GÉOCODER UNE ADRESSE AVEC JAVASCRIPT GCLIENTGEOCODER GETLOCATIONS

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.

  Article créé le : 09/12/2008
 

Présentation

Dans cet exemple nous allons géocoder une adresse postale à l'aide de JavaScript.

Pour cela, nous utilisons GClientGeocoder et getLocations(adresse, callback) :

GClientGeocoder.getLocations(adresse, callback), permet d'envoyer l'adresse à géocoder dans une requête adressée aux serveurs Google.

La réponse est un objet au format .json contenant les informations relatives à l'adresse recherchée sous une forme structurée, qui sera ensuite transmis à la fonction callback pour traitement.

Cette réponse comporte les informations suivantes :

  • État de la requête,
  • Nombre de réponses trouvées.

Et pour chaque réponse trouvée :

  • Adresse reformatée par Google Maps
  • Niveau de précision
  • Pays
  • Région
  • Département
  • Ville
  • Rue
  • Code postal
  • Latitude
  • Longitude
  • Altitude

Contrairement à la méthode GClientGeocoder.getLatLng(addresse, callback), la fonction callback permet de déterminer les raisons de l'échec en examinant le code valeur du champ État (Depuis 2.55).

le géocodeur peut également vous suggérer jusqu'à 10 adresses lorsque votre recherche est imprécise :

Exemple :

Si vous recherchez "Victor Hugo Centre" le géocodeur va vous suggérer 10 réponses :

  1. Avenue Victor Hugo, 36210 Chabris, France
  2. Avenue Victor Hugo, 28000 Chartres, France
  3. Rue Victor Hugo, 37000 Tours, France
  4. Rue Victor Hugo, 37540 Saint-Cyr-sur-Loire, France
  5. Rue Victor Hugo, 37400 Amboise, France
  6. Rue Victor Hugo, 45680 Dordives, France
  7. Rue Victor Hugo, 37140 Bourgueil, France
  8. Rue Victor Hugo, 37230 Luynes, France
  9. Rue Victor Hugo, 18250 Henrichemont, France
  10. Rue Victor Hugo, 18200 Saint-Amand-Montrond, France

Carte

Géocoder cette adresse postale :

Observez les différents résultats obtenus en fonction de la précision de l'adresse recherchée :

Code

Code : Avec Google Ajax API Loader

<?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"/>
<!-- 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"});
/* Déclaration des variables globales */
var maCarte;
var monGeocodeur;
var visibilite;
var compilInfo;
var miniconerouge;
var address;
var precision = ["Adresse inconnue", "du Pays", "de la Région", "du Département", "de la Ville", "du Code postal", "de la Rue", "d'une Intersection", "de l'adresse", "Maximum"];
 
/* 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"));
/* ... Ajout d'un mini contrôle sur la carte nommée "maCarte" ... */
		maCarte.addControl(new google.maps.SmallMapControl());
/* ... La carte nommée "maCarte" est centrée sur la Latitude 47.341571, la Longitude 0.514233, avec un niveau de zoom égal à 13 ... */
		maCarte.setCenter(new google.maps.LatLng(47.388588,0.689049), 9);
/* ... Caractéristiques de l'icône nommé "miniconerouge" ... */
		miniconerouge = new google.maps.Icon();
		miniconerouge.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		miniconerouge.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		miniconerouge.iconSize = new google.maps.Size(12, 20);
		miniconerouge.shadowSize = new google.maps.Size(22, 20);
		miniconerouge.iconAnchor = new google.maps.Point(6, 20);
		miniconerouge.infoWindowAnchor = new google.maps.Point(5, 1);
/* ... Création d'un nouveau géocodeur nommé "monGeocodeur" ... */
		monGeocodeur = 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 showlocation() */
function showlocation(addRecherche) {
	address = addRecherche;
	compilInfo = "";
	document.getElementById("info").innerHTML = "";
	monGeocodeur.getLocations(address, AfficheAdresse);
}
 
/* Fonction creationMarqueur() */
function creationMarqueur(numero, lat, lng) {
/* ... Création d'un nouveau point nommé "point" ayant pour latitude "lat" et longitude "lng" ... */
	var point = new google.maps.LatLng(lat, lng);
/* ... Complète "visibilite" avec le point nommé "point" ... */
	visibilite.extend(point);
/* ... Création d'un nouveau marqueur nommé "marker" ancré sur le point nommé "point" et repésenté par l'icône nommé "miniconerouge ... */
	var marker = new google.maps.Marker(point,miniconerouge);
/* ... Création d'un observateur d'événement lié au marqueur nommé "marker" ... */
/* ... L'événement observé est le "click" sur le marqueur nommé "marker"    ... */
	google.maps.Event.addListener(marker, "click", function() {
/* ... Dès qu'un "click" sera détecté sur le marqueur nommé "marker", ouverture d'une info-bulle ... */
/* ... à l'intérieur de laquelle est affiché le numéro du marqueur, sa latitude et sa longitude   ... */
		marker.openInfoWindowHtml("Marqueur : " + (numero+1) + "<br /><br /><b>Latitude</b> : " + lat + "<br /><br /><b>Longitude</b> : " + lng);
	});
	return marker;
}
 
/* Fonction AfficheAdresse() */
function AfficheAdresse(reponse) {
/* ... visibilite : va contenir tous les points issus du géocodage et sera utilisé pour optimiser l'affichage de la carte ... */
	visibilite = new GLatLngBounds();
/* ... Suppression de tous les recouvrements situés sur la carte nommée "maCarte" ... */
	maCarte.clearOverlays();
/* ... Si, le code obtenu en réponse de la requête de géocodage  n'existe pas ou qu'elle est différente de 200 ... */
	if (!reponse || reponse.Status.code != 200) {
/* ... Affichage d'un message d'alerte ... */
		alert("Désolé, Il nous est impossible de géocoder votre adresse : \r\n\nCode Erreur : " + reponse.Status.code + '\r\n\nRetrouvez la signification de ce code à cette adresse :\r\n\nhttp://www.google.com/apis/maps/documentation/reference.html#GGeoStatusCode');
/* ... Sinon ... */
	} else {
/* ... "nombreReponse" est égal au nombre de réponses obtenues suite à la requête de géocodage ... */
		var nombreReponse = reponse.Placemark.length;
/* ... On fait une boucle sur chacune des réponses pour en déterminer les caractéristiques (Statut de la requête, Précision, Adresse formatée, Pays, Région, Département, Ville, Rue, Code Postal, Latitude, Longitude, Altitude) ... */
		for(a=0; a<nombreReponse ;a++){
			place = reponse.Placemark[a];
			var Gstatusrequete = reponse.Status.code;
			var Gprecision = place.AddressDetails.Accuracy;
			var adresserequete = address;
			var GadresseFormatee = place.address;
			if(place.AddressDetails.Country){
				var Gpays = place.AddressDetails.Country.CountryNameCode;
				if(place.AddressDetails.Country.AdministrativeArea){
					var Gregion = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
					if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea){
						var Gdepartement = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
						if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality){
							var Gville = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
							if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare){
								var Grue = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
							}
							if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode){
								var Gcodepostal = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
							}
						}
					}
				}
			}
			var Galtitude = place.Point.coordinates[2];
			var Glatitude = place.Point.coordinates[1];
			var Glongitude = place.Point.coordinates[0];
/* ... "compilinfo" : on construit un tableau contenant les caratéristiques de chaque réponse ... */
			compilInfo = compilInfo + '<p>'
			+ '<table class="tablotexte">'
			+ '<tr><th colspan="2"><b>Réponse N° ' + (a+1) + ' / ' + nombreReponse + '</b></td></th>'
			+ '<tr><td><b>Etat de la requète</b></td><td>' + Gstatusrequete + '</td></tr>'
			+ '<tr><td><b>Adresse Demandée</b></td><td>' + adresserequete + '</td></tr><tr><td style="width: 150px;"><b>Adresse Formatée</b></td><td>' + place.address + '</td></tr>'
			+ '<tr><td><b>Niveau de précision</b></td><td><b>' + Gprecision + '</b> -> La précision du géocodage se situe au niveau <b>' + precision[Gprecision] + '</b></td></tr>'
			+ '<tr><td><b>Pays</b></td><td>' + Gpays + '</td></tr>'
			+ '<tr><td><b>Région</b></td><td>' + Gregion + '</td></tr>'
			+ '<tr><td><b>Département</b></td><td>' + Gdepartement + '</td></tr>'
			+ '<tr><td><b>Ville</b></td><td>' + Gville + '</td></tr>'
			+ '<tr><td><b>Rue</b></td><td>' + Grue + '</td></tr>'
			+ '<tr><td><b>Code Postal</b></td><td>' + Gcodepostal + '</td></tr>'
			+ '<tr><td><b>Latitude</b></td><td>' + Glatitude + '</td></tr>'
			+ '<tr><td><b>Longitude</b></td><td>' + Glongitude + '</td></tr>'
			+ '<tr><td><b>Altitude</b></td><td>' + Galtitude + '</td></tr>'
			+ '</table>'
			+ '</p>';
/* ... Ajout, à la carte nommée "maCarte", d'un marqueur par appelle de la fonction creationMarqueur(a, Glatitude, Glongitude) ... */
			maCarte.addOverlay(creationMarqueur(a, Glatitude, Glongitude));
 
		}
/* ... Une fois la boucle terminée, on affiche e contenu de "compilInfo" dans la balise <div> ayant pour identifiant id=info ... */
		document.getElementById("info").innerHTML = compilInfo;
/* ... Centre la carte nommée "maCarte" de façon optimisée. C'est à dire, avec le niveau de zoom et le centre idéals de façon à voir tous les marqueurs sur la carte ... */
		maCarte.setCenter(visibilite.getCenter(),maCarte.getBoundsZoomLevel(visibilite)); 
	}
}
/* Appelle la fonction "initialize" lorsque la page web sera chargée */
google.setOnLoadCallback(initialize);
</script>
<style type="text/css">
<!--
.cadre{margin:1em 0;padding:1em 0;height:auto;border:1px solid #513a0b;text-align:center;background-color:#e7e3d7;}
table.tablotexte{margin:0;margin-top:2em;padding:0;width:100%;border-collapse:collapse;border:1px solid #303030;font:1em Arial,Helvetica,sans-serif;	background-color: #FFFFFF;}
table.tablotexte th{border:1px solid #303030;text-align:center;padding:5px;background:#d3cdb8;color:#513a0b;}
table.tablotexte td{border:1px solid #303030;text-align:justify;padding:5px;vertical-align:top;}
-->
</style>
</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>
<form action="#" method="post" enctype="text/plain" onsubmit="showlocation(this.q.value); return false;">
<div class="cadre">
<b>Géocoder cette adresse postale</b> : <input type="text" name="q" value="10 rue bretonneau, 37000 Tours, france" size="40" id="qa" /><input type="submit" name="rechercher" value="Rechercher" />
<p>Observez les différents résultats obtenus en fonction de la précision de l'adresse recherchée : </p> 
<ul style="text-align:left;">
<li><a href="JavaScript:void(showlocation('10 rue bretonneau, 37000 Tours, france'));">10 rue bretonneau, 37000 Tours, france</a></li> 
<li><a href="JavaScript:void(showlocation('rue bretonneau, Tours, FR'));">rue bretonneau, Tours, FR</a></li> 
<li><a href="JavaScript:void(showlocation('Tours'));">Tours</a></li> 
<li><a href="JavaScript:void(showlocation('bretonneau, indre et loire'));">bretonneau, indre et loire</a></li> 
<li><a href="JavaScript:void(showlocation('bretonneau, centre'));">bretonneau, centre</a></li> 
<li><a href="JavaScript:void(showlocation('tours france'));">tours france</a></li> 
</ul></div>
</form>
<div id="info"></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>

Code : Sans Google Ajax API Loader

<?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"/>
<!-- Chargement du script Google Maps, version 2.x, en précisant votre clé -->
<script src="http://maps.google.com/maps?file=api&v=2.x&key=Inserez_Votre_Clef_API_Ici&sensor=false"
type="text/javascript"></script>
<script type="text/javascript">
/* Déclaration des variables globales */
var maCarte;
var monGeocodeur;
var visibilite;
var compilInfo;
var miniconerouge;
var address;
var precision = ["Adresse inconnue", "du Pays", "de la Région", "du Département", "de la Ville", "du Code postal", "de la Rue", "d'une Intersection", "de l'adresse", "Maximum"];
 
/* 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"));
/* ... Ajout d'un mini contrôle sur la carte nommée "maCarte" ... */
		maCarte.addControl(new GSmallMapControl());
/* ... La carte nommée "maCarte" est centrée sur la Latitude 47.341571, la Longitude 0.514233, avec un niveau de zoom égal à 13 ... */
		maCarte.setCenter(new GLatLng(47.388588,0.689049), 9);
/* ... Caractéristiques de l'icône nommé "miniconerouge" ... */
		miniconerouge = new GIcon();
		miniconerouge.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		miniconerouge.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		miniconerouge.iconSize = new GSize(12, 20);
		miniconerouge.shadowSize = new GSize(22, 20);
		miniconerouge.iconAnchor = new GPoint(6, 20);
		miniconerouge.infoWindowAnchor = new GPoint(5, 1);
/* ... Création d'un nouveau géocodeur nommé "monGeocodeur" ... */
		monGeocodeur = 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 showlocation() */
function showlocation(addRecherche) {
	address = addRecherche;
	compilInfo = "";
	document.getElementById("info").innerHTML = "";
	monGeocodeur.getLocations(address, AfficheAdresse);
}
 
/* Fonction creationMarqueur() */
function creationMarqueur(numero, lat, lng) {
/* ... Création d'un nouveau point nommé "point" ayant pour latitude "lat" et longitude "lng" ... */
	var point = new GLatLng(lat, lng);
/* ... Complète "visibilite" avec le point nommé "point" ... */
	visibilite.extend(point);
/* ... Création d'un nouveau marqueur nommé "marker" ancré sur le point nommé "point" et repésenté par l'icône nommé "miniconerouge ... */
	var marker = new GMarker(point,miniconerouge);
/* ... Création d'un observateur d'événement lié au marqueur nommé "marker" ... */
/* ... L'événement observé est le "click" sur le marqueur nommé "marker"    ... */
	GEvent.addListener(marker, "click", function() {
/* ... Dès qu'un "click" sera détecté sur le marqueur nommé "marker", ouverture d'une info-bulle ... */
/* ... à l'intérieur de laquelle est affiché le numéro du marqueur, sa latitude et sa longitude   ... */
		marker.openInfoWindowHtml("Marqueur : " + (numero+1) + "<br /><br /><b>Latitude</b> : " + lat + "<br /><br /><b>Longitude</b> : " + lng);
	});
	return marker;
}
 
/* Fonction AfficheAdresse() */
function AfficheAdresse(reponse) {
/* ... visibilite : va contenir tous les points issus du géocodage et sera utilisé pour optimiser l'affichage de la carte ... */
	visibilite = new GLatLngBounds();
/* ... Suppression de tous les recouvrements situés sur la carte nommée "maCarte" ... */
	maCarte.clearOverlays();
/* ... Si, le code obtenu en réponse de la requête de géocodage  n'existe pas ou qu'elle est différente de 200 ... */
	if (!reponse || reponse.Status.code != 200) {
/* ... Affichage d'un message d'alerte ... */
		alert("Désolé, Il nous est impossible de géocoder votre adresse : \r\n\nCode Erreur : " + reponse.Status.code + '\r\n\nRetrouvez la signification de ce code à cette adresse :\r\n\nhttp://www.google.com/apis/maps/documentation/reference.html#GGeoStatusCode');
/* ... Sinon ... */
	} else {
/* ... "nombreReponse" est égal au nombre de réponses obtenues suite à la requête de géocodage ... */
		var nombreReponse = reponse.Placemark.length;
/* ... On fait une boucle sur chacune des réponses pour en déterminer les caractéristiques (Statut de la requête, Précision, Adresse formatée, Pays, Région, Département, Ville, Rue, Code Postal, Latitude, Longitude, Altitude) ... */
		for(a=0; a<nombreReponse ;a++){
			place = reponse.Placemark[a];
			var Gstatusrequete = reponse.Status.code;
			var Gprecision = place.AddressDetails.Accuracy;
			var adresserequete = address;
			var GadresseFormatee = place.address;
			if(place.AddressDetails.Country){
				var Gpays = place.AddressDetails.Country.CountryNameCode;
				if(place.AddressDetails.Country.AdministrativeArea){
					var Gregion = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
					if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea){
						var Gdepartement = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;
						if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality){
							var Gville = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
							if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare){
								var Grue = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
							}
							if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode){
								var Gcodepostal = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
							}
						}
					}
				}
			}
			var Galtitude = place.Point.coordinates[2];
			var Glatitude = place.Point.coordinates[1];
			var Glongitude = place.Point.coordinates[0];
/* ... "compilinfo" : on construit un tableau contenant les caratéristiques de chaque réponse ... */
			compilInfo = compilInfo + '<p>'
			+ '<table class="tablotexte">'
			+ '<tr><th colspan="2"><b>Réponse N° ' + (a+1) + ' / ' + nombreReponse + '</b></td></th>'
			+ '<tr><td><b>Etat de la requète</b></td><td>' + Gstatusrequete + '</td></tr>'
			+ '<tr><td><b>Adresse Demandée</b></td><td>' + adresserequete + '</td></tr><tr><td style="width: 150px;"><b>Adresse Formatée</b></td><td>' + place.address + '</td></tr>'
			+ '<tr><td><b>Niveau de précision</b></td><td><b>' + Gprecision + '</b> -> La précision du géocodage se situe au niveau <b>' + precision[Gprecision] + '</b></td></tr>'
			+ '<tr><td><b>Pays</b></td><td>' + Gpays + '</td></tr>'
			+ '<tr><td><b>Région</b></td><td>' + Gregion + '</td></tr>'
			+ '<tr><td><b>Département</b></td><td>' + Gdepartement + '</td></tr>'
			+ '<tr><td><b>Ville</b></td><td>' + Gville + '</td></tr>'
			+ '<tr><td><b>Rue</b></td><td>' + Grue + '</td></tr>'
			+ '<tr><td><b>Code Postal</b></td><td>' + Gcodepostal + '</td></tr>'
			+ '<tr><td><b>Latitude</b></td><td>' + Glatitude + '</td></tr>'
			+ '<tr><td><b>Longitude</b></td><td>' + Glongitude + '</td></tr>'
			+ '<tr><td><b>Altitude</b></td><td>' + Galtitude + '</td></tr>'
			+ '</table>'
			+ '</p>';
/* ... Ajout, à la carte nommée "maCarte", d'un marqueur par appelle de la fonction creationMarqueur(a, Glatitude, Glongitude) ... */
			maCarte.addOverlay(creationMarqueur(a, Glatitude, Glongitude));
		}
/* ... Une fois la boucle terminée, on affiche e contenu de "compilInfo" dans la balise <div> ayant pour identifiant id=info ... */
		document.getElementById("info").innerHTML = compilInfo;
/* ... Centre la carte nommée "maCarte" de façon optimisée. C'est à dire, avec le niveau de zoom et le centre idéals de façon à voir tous les marqueurs sur la carte ... */
		maCarte.setCenter(visibilite.getCenter(),maCarte.getBoundsZoomLevel(visibilite)); 
	}
}
</script>
<style type="text/css">
<!--
.cadre{margin:1em 0;padding:1em 0;height:auto;border:1px solid #513a0b;text-align:center;background-color:#e7e3d7;}
table.tablotexte{margin:0;margin-top:2em;padding:0;width:100%;border-collapse:collapse;border:1px solid #303030;font:1em Arial,Helvetica,sans-serif;	background-color: #FFFFFF;}
table.tablotexte th{border:1px solid #303030;text-align:center;padding:5px;background:#d3cdb8;color:#513a0b;}
table.tablotexte td{border:1px solid #303030;text-align:justify;padding:5px;vertical-align:top;}
-->
</style>
</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>
<form action="#" method="post" enctype="text/plain" onsubmit="showlocation(this.q.value); return false;">
<div class="cadre">
<b>Géocoder cette adresse postale</b> : <input type="text" name="q" value="10 rue bretonneau, 37000 Tours, france" size="40" id="qa" /><input type="submit" name="rechercher" value="Rechercher" />
<p>Observez les différents résultats obtenus en fonction de la précision de l'adresse recherchée : </p> 
<ul style="text-align:left;">
<li><a href="JavaScript:void(showlocation('10 rue bretonneau, 37000 Tours, france'));">10 rue bretonneau, 37000 Tours, france</a></li> 
<li><a href="JavaScript:void(showlocation('rue bretonneau, Tours, FR'));">rue bretonneau, Tours, FR</a></li> 
<li><a href="JavaScript:void(showlocation('Tours'));">Tours</a></li> 
<li><a href="JavaScript:void(showlocation('bretonneau, indre et loire'));">bretonneau, indre et loire</a></li> 
<li><a href="JavaScript:void(showlocation('bretonneau, centre'));">bretonneau, centre</a></li> 
<li><a href="JavaScript:void(showlocation('tours france'));">tours france</a></li> 
</ul>
</div>
</form>
<div id="info"></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>

Explications

GClientGeocoder.getLocations renvoye un objet au format "JSON" comprenant les informations suivantes :

  • Status
    • request -- Le type de requète. Dans ce cas il s'agit toujours de geocode.
    • code -- Réponse sous forme de code (équivalent au code de statut HTTP) indiquant si la requète de géocodage a été effectuée avec succés ou non. Voir la liste des codes de statut.
  • Placemark -- Plusieurs emplacement peuvent être retournés si le géocodage a aboutit à une multitude de réponses.
    • address -- Adresse reformatée (réécrite) par google maps.
    • AddressDetails -- L'adresse au format xAL, ( eXtensible Address Language ), norme internationale pour le formatage d'adresse.
    • Point -- Un point dans l'espace 3D.
      • coordinates -- La longitude, latitude, et l'altitude de l'adresse. L'altitude est toujours à 0.

Exemple :

Voici le contenu de la réponse de Google Maps au format .json pour l'adresse : 10 rue bretonneau, 37000 Tours, FR


{

	"name":"10 RUE BRETONNEAU,37000 tours, FR",

	"Status":{

		"code":"200,

		"request":"geocode"

	},

	"Placemark":[

		{

			"id":"p1",

			"address":"10, Rue Bretonneau, 37000 Tours, France",

			"AddressDetails":{

				"Country":{

					"CountryNameCode":"FR",

					"AdministrativeArea":{

						"AdministrativeAreaName":"Centre",

						"SubAdministrativeArea":{

							"SubAdministrativeAreaName":"Indre-et-Loire,

							"Locality":{

								"LocalityName":"Tours",

								"Thoroughfare":{

									"ThoroughfareName":"10, Rue Bretonneau"

								},

								"PostalCode":{

									"PostalCodeNumber":"37000"

								}

							}

						}

					}

				},

				"Accuracy": 8

			},

			"Point":{

				"coordinates":[0.680357,47.395405,0]

			}

		}

	]

}

Ligne [57] : monGeocodeur.getLocations(address, AfficheAdresse);; : une requète contenant l' "address" à géocoder est envoyée à Google et la réponse, un objet au format .json, sera transmis à la fonction AfficheAdresse et portera le nom "reponse" Ligne [22].

Désormais, pour extraire les informations présentent au format .json dans "reponse" il suffit de procéder comme suit :

InformationCode
Nombre de réponses trouvéesresponse.Placemark[].length;
Premiére réponse trouvéeresponse.Placemark[0];
N ième réponse trouvéeresponse.Placemark[N-1];
Adresse reformatée par Google Mapsplace.address
Niveau de précisionplace.AddressDetails.Accuracy
Paysplace.AddressDetails.Country.CountryNameCode
Régionplace.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName
Départementplace.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName
Villeplace.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName
Rueplace.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName
Code postalplace.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber
Latitudeplace.Point.coordinates[1]
Longitudeplace.Point.coordinates[0]
Altitudeplace.Point.coordinates[2]

Remarque(s)

Autres articles :

 

API Google Maps - API Google Earth - Fichiers KML KMZ - Aide Didacticiel Documentation Exemple Tutoriels Trucs et Astuces en Français sur TouraineVerte.com
Formation et tutoriels sur les cartes API Google Maps | Formation et tutoriels sur les cartes API Google Earth | Formation et tutoriels sur les Fichiers KML KMZ
Développeur freelance auto-entrepreneur carte Google Maps Earth API | http://www.TouraineVerte.com | © 2010 - Plan du site | fadamaps37@touraineverte.com