Utilisation de Google Maps |
| Écrit par Nicolas PIED | |
| Publié le 05-09-2006 - 27904 hits | |
Google Maps est un service gratuit de cartographie en ligne. Lancé depuis 2004, celui-ci est désormais accessible pour de nombreux pays. Ce service propose deux types de plans :
Obtenir une clef d’utilisation de l’API Google MapsL’utilisation de Google Maps est basée sur une API JavaScript utilisable gratuitement à partir de l’instant où l’on possède une clef. Il vous est possible de récupérer cette clef gratuitement pour un domaine donné à l’adresse ci-dessous : Cette demande est réalisée en une minute environ en complétant un formulaire d’inscription à l’issue duquel vous obtiendrez une clef textuelle qui sera disponible uniquement pour le domaine Internet précisé. En effet, les clefs sont affichées en clair dans les applications Google Maps, il est donc possible à une autre personne de récupérer celle-ci en affichant le code source HTML. La contrainte du nom de domaine permet donc d’éviter des utilisations non autorisées par vous et Google. Créer votre première application Google MapsLa première application qui va être présentée ci-dessous va permettre de localiser un point géographique sur Google Maps à l’aide d’une coordonnée sous la forme latitude / longitude. La navigation sera ensuite possible via certains composants permettant de réaliser les actions suivantes :
La première ligne dans le code source HTML est la suivante : <script src="http://maps.google.com/maps?file=api&v=2.x&key=VOTRE_CLEF" type="text/javascript"></script>Celle-ci permet de faire appel au script conçu par Google pour manipuler les fonctionnalités de Google Maps. Cette ligne précise également l’utilisation de l’API dans sa version 2.x qui présente certaines nouveautés comme GeoCoder, qui permet de localiser un point sur une carte à partir d’une adresse postale, et quelques corrections de bugs présents dans la version 1. Pour rappel, il est possible d’obtenir une clef d’utilisation de l’API Google Maps à l’adresse suivante : Obtenir une clef d’utilisation Google Maps. <div id="map" style="width: 400px; height: 300px"></div> La division utilisée ici, va par la suite contenir la carte routière ou satellitaire. Il est possible, comme dans ce cas, de limiter les dimensions de la carte en limitant celles de la division. <script type="text/javascript"> //<![CDATA[ /* Variable qui va correspondre à l'affichage de la carte dans la "div" */ var map = new GMap2(document.getElementById("map")); /* Centre la carte aux coordonnées indiquées et réalise un zoom de niveau 14 */ map.setCenter(new GLatLng(49.41483, 2.817895), 14); /* Cette ligne permet de bloquer le déplacement sur la carte à l'aide de la souris map.disableDragging(); */ map.addControl(new GSmallZoomControl()); //]]> </script> Le niveau de zoom est ici de 14, il faut savoir que celui-ci accepte pour valeur les nombres entiers compris entre 1 et 17 inclus et que plus la valeur indiquée est grande et plus le niveau de zoom est élevé.
Il est aussi possible d’ajouter plusieurs contrôles pour une même carte ; ceux-ci se complètent comme dans l’exemple ci-dessous : map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl());Visualiser ce premier exemple. Télécharger les sources de ce premier exemple. Ouvrir une « info-bulle » Google MapsL’API Google Maps possède des fonctions permettant l'affichage « d'info-bulles » ce qui permet de positionner des bâtiments, des annotations, etc. L’exemple ci-dessous permet, par rapport à l’exemple précédent, d’afficher une « info-bulle » au centre de la carte indiquant le nom du point géographique donné. Le premier paramètre correspond aux coordonnées géographiques de type « GLatLng » auxquelles attacher « l’info-bulle » et le second correspond au contenu affiché dans cette « info-bulle ». map.openInfoWindow(point, document.createTextNode("Université Technologique de Compiègne")); L’API Google Maps met à disposition deux types d’info-bulles, la première ne permet d’afficher que du texte (comme celle utilisée dans l’exemple) et la seconde permet d’afficher du contenu HTML (donc images, etc.). Cette dernière est disponible en utilisant « openInfoWindowHtml » au lieu de « openInfoWindow ». ![]() Mise en place d'une info-bulle Visualiser l’exemple permettant l’affichage d’une « info-bulle ». Afficher un marqueur sur la carteLes marqueurs sont associés à une coordonnée géographique et permettent de situer celle-ci sur la carte issue de l’utilisation de l’API Google Maps. Par défaut, ceux-ci ressemblent à une poire renversée, mais il vous est possible de les personnaliser comme le montre Google sur cet article :Personnaliser les icônes de Google Maps. map.addOverlay(new GMarker(point)); En ajoutant cette ligne à la fin du code source issu du premier exemple, on obtient ainsi un marqueur attaché aux coordonnées nommées « point » permettant de localiser l’Université Technologique de Compiègne. La fonction « addOverlay », comme son nom l’indique, permet de superposer ce marqueur sur la carte. ![]() Mise en place d'un marqueur Exemple affichant deux marqueurs. Exemple affichant des marqueurs aléatoires (utilisation d'un tableau JavaScript). Télécharger les sources de cet exemple. Attacher un évènement à la carte Google MapsL’exemple ci-dessous présente une interaction réalisée entre la carte et un utilisateur. Ce dernier, à l’aide de la souris, va cliquer à un endroit de la carte ; si aucun marqueur ne se trouve sous le curseur un marqueur est alors affiché, sinon il est supprimé. Ces quelques lignes précisent qu’un « listener » (entité chargée d’écouter les évènements) est ajouté aux évènements généraux « GEvent ». Ce « listener » a pour but d’exécuter la fonction passée en 3ème argument lors d’un « clic » sur le conteneur « map » soit la division HTML correspondante. GEvent.addListener(map, "click", function(marker, point) { /* Si un marqueur est présent, alors il est supprimé */ if (marker) map.removeOverlay(marker); /* Sinon, on ajoute un marqueur au point demandé */ else map.addOverlay(new GMarker(point)); });Lorsqu’un évènement correspondant survient, la fonction en argument, va alors recevoir deux paramètres :
![]() Gestion des évènements Google Maps On pourrait très bien imaginer une application demandant à l’utilisateur d’indiquer son adresse ou d’apporter des précisions sur un lieu. Les résultats pourraient ensuite être enregistrés dans une base de données en vue de futures utilisations. Afficher des onglets dans les « info-bulles »L’exemple ci-dessous montre comment afficher des onglets dans les info-bulles HTML. Le principe en soit est assez simple, puisqu’il s’agit de définir un tableau de type « GInfoWindowTab » qui prend comme premier argument le nom de l’onglet et comme second le contenu de l’onglet ; contenu qui peut être sous format texte ou HTML. /* Tableau de GInfoWindowTab qui va contenir les onglets de l'info-bulle */ var infoTabs = [ new GInfoWindowTab("Onglet #1", "Le contenu de l'onglet 1"), new GInfoWindowTab("Onglet #2", "<b>Voici un texte en gras</b>") ]; /* Création du marqueur attaché au point */ var marker = new GMarker(point); /* Enregistrer un listener lors d'un clic sur le marqueur */ GEvent.addListener(marker, "click", function() { /* Lors d'un clic, afficher les onglets */ marker.openInfoWindowTabsHtml(infoTabs); }); /* Afficher le marqueur et l'info-bulle */ map.addOverlay(marker); marker.openInfoWindowTabsHtml(infoTabs); ![]() Création d'onglets dans une info-bulle Visualiser l’exemple sur les onglets dans les « info-bulles ». Télécharger les sources de cet exemple. Déplacer les marqueurs Google Maps à la sourisL’exemple ci-dessous propose de déplacer un marqueur à l’aide de la souris en utilisant la technique dites « drag & drop ». Pour cela, il est nécessaire d’indiquer au marqueur dans un premier temps que celui-ci à la possibilité d’être déplacer : d’où le « {draggable: true} » en second paramètres du constructeur « GMarker ».Ensuite, mais cela reste facultatif, il est possible d’attacher des « listeners » qui vont intervenir lors des différents évènements engendrés par le déplacement du marqueur. Dans notre cas, seuls les évènements « dragstart » et « dragend » seront pris en compte. /* Création du marqueur attaché au point * Le marqueur est ici déplaçable à l'aide de la souris */ var marker = new GMarker(point, {draggable: true}); /* Lorsque son déplacement commence, on ferme l'info-bulle */ GEvent.addListener(marker, "dragstart", function() { map.closeInfoWindow(); }); /* Lorsque son déplacement se termine, on affiche l'info-bulle */ GEvent.addListener(marker, "dragend", function() { marker.openInfoWindowHtml("Bien joué !"); }); ![]() Un marqueur déplaçable La liste complète des évènements Google Maps pour l’API 2 est disponible à l’adresse ci-dessous au niveau de la partie « Events » : Obtenir les coordonnées géographiques d’une adresse postale donnéeL’API Google Maps, dans sa version 2, permet de déterminer les coordonnées géographiques d’une adresse postale donnée. Ceci est réalisé via l’utilisation de l’objet « GClientGeocoder » qui utilise les méthodes HTTP pour interroger les serveurs concernés. Cette fonctionnalité est donc bien plus simple pour l’utilisateur que de saisir les latitudes et longitudes. ![]() Recherche et conversion d'adresses
/* Création de l'objet GClientGeocoder */ var geocoder = new GClientGeocoder(); /* Fonction qui à partir d'une adresse va déterminer le point géographique */ function showAddress(address) { if (geocoder) { geocoder.getLatLng(address, function(point) { if (!point) { /* Si les coordonnées n'ont pas été trouvés */ alert("Impossible de localiser l'adresse :\n\n" + address); } else { /* /* Les coordonnées ont été trouvés */ /* Centrer la carte sur le point */ map.setCenter(point, 14); /* Création d'un marqueur */ var marker = new GMarker(point); /* Afficher le marqueur */ map.addOverlay(marker); /* Associer une info-bulle au marqueur */ marker.openInfoWindowHtml(address); } }); } }Visualiser l’exemple utilisant « Geocoder ». Télécharger les sources de cet exemple. ConclusionGoogle Maps présente des fonctionnalités avancées qui peuvent fournir des utilisations intéressantes au sein d’applications informatiques. L’API étant en développement continue, des nouveautés verront sûrement le jour d’ici peu, ce qui promet des emplois répondant de plus en plus aux attentes des utilisateurs et développeurs. |
|
| Dernière mise à jour : 06-09-2006 |