[GoogleMAP API] Afficher les éléments d'une recherche geocode

Sur GoogleMAP il est possible d'utiliser le GeoCoder pour rechercher une adresse sur la carte. Un Geocoder fournit non seulement la longitude et la latitude mais également l’adresse telle qu’elle est orthographiée dans la base de donnée.
Dans un premier temps, il faut initialiser le geocoder :

var geocoder = new GClientGeocoder();


Ensuite, on fait l'appel au geocoder pour trouver les points qui correspondent à une adresse donnée :

geocoder.getLocations('Paris nation', resultCallback);


On fait l'appel ici à la méthode resultCallback qui va être appelée lorsque le serveur aura répondu :

function resultCallback(response) {

// Supprimer les marqueurs sur la carte
map.clearOverlays();

if (!response || response.Status.code != 200) {
// En cas d'erreur ou si il n'y a aucun résultat
alert('Aucun résultat');
}
else {

// Si il n'y a qu'un point, on centre la carte directement
if (response.Placemark.length == 1) {
map.setCenter(new GLatLng(
response.Placemark[0].Point.coordinates[1],
response.Placemark[0].Point.coordinates[0]
));
return;
}

// On prépare un objet Bounds qui corresponds à la zone occupée
// par tous les points retournés par le geocoder.
var bounds = new GLatLngBounds();

// On boucle sur tous les points retournés
for (var i = 0; i < response.Placemark.length; i++) {

// Cet objet correspond au point actuel
var p = response.Placemark[i];

// Cet objet correspond à l'emplacement géographique du point
var point = new GLatLng(
p.Point.coordinates[1],
p.Point.coordinates[0]
);

// On ajoute le point aux Bounds
bounds.extend(point);

// On fabrique un marqueur pour ce point
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(p.address);
});

// On affiche le point sur la carte
map.addOverlay(marker);
}

// On centre la carte sur zone occupée par tous les points, et on adapte
// le niveau de zoom
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

}
}

Google MAP API, GLatLngBounds, GLatLng, GMarker, fit-to-bounds zoom, GClientGeocoder, geocoder search, adapter le zoom de la carte aux résultats de la recherche, centrer la carte pour adapter la vue aux résultats de la recherche, fit map bounds to search result


About the Author

Ted Marklor est un web designer, un web developer et un génie de la nature. Transcendant le web depuis bientôt 15 ans, Ted est une source d’inspiration et de conseil pour toute une génération de jeunes programmeurs. Le Web 2.0, c’est lui. Dans la vie, il aime aussi faire des avions en papier, s’inventer des pseudonymes et une vie de winner, et surtout parler de lui à la troisième personne. Ça se fait en ce moment sur les blogs…


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.