L’API Google Maps a révolutionné le Web (du moins en partie). Cette application cartographique en javascript totalement gratuite a permis aux développeurs de créer les « mashups », des applications hybrides qui combinent plusieurs sources d’informations.
Si vous êtes tenté par le développement d’une application utilisant de la cartographie, voici un tutorial présentant les grandes lignes de l’API Google Maps.
Tout d’abord je ne saurais vous conseiller d’acheter « Beginning Google Maps Applications » (en anglais).
Ce tutorial se fera en plusieurs parties que je posterais au fur et à mesure. De plus je pense que je ferais d’autres tutorials pour les autres API car elles ont chacune leurs avantages et inconvénients.
Prérequis
Pour utiliser l’API Google Maps (ou tout autre API cartographique) vous devez avoir des connaissances en language Javascript et éventuellement développement orienté objet.
L’API Javascript Google Maps est (pour faire simple) un script Javascript qui est appelé grâce à la balise <script>.
L’appel au code javascript doit être fait avec un paramètre « key ».
Cette clé vous est fournie par Google et dépend du nom de domaine où sera appelée l’API Google Maps.
Par exemple pour le nom de domaine renalid.com, la clé est :
ABQIAAAAGrKrVTYvOAArcvEc7RkikRQOhA6XYTkMKiLr-GFNzA5v8MYfFhTIin2y-FSBu_nLsl58KPu9ySKs4A
Pour obtenir cette clé, accéder à cette page (un compte Google est aussi requis). Lisez les différentes remarques quant à l’utilisation de l’API, valider les notices légales et entrer le nom de domaine depuis lequel l’API sera appelée (cela peut bien sûr être localhost ou 127.0.0.1).
Attention si la clé n’est pas bonne vous ne pourrez pas utiliser l’API.
Un fois votre clé obtenue, Google vous fournit un exemple d’intégration de l’appel à l’API Google Maps.
La balise suivante doit se trouver dans le <HEAD> de toutes les pages qui inséreront les cartes Google Maps.
Par exemple :
<script xsrc="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAGrKrVTYvOAArcvEc7RkikRQOhA6XYTkMKiLr-GFNzA5v8MYfFhTIin2y-FSBu_nLsl58KPu9ySKs4A" mce_src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAGrKrVTYvOAArcvEc7RkikRQOhA6XYTkMKiLr-GFNzA5v8MYfFhTIin2y-FSBu_nLsl58KPu9ySKs4A" type="text/javascript"></script>
Afficher une carte grâce à l’API Google Maps
D’abord il faut insérer dans votre page un <DIV> où sera inséré la carte Google Maps. Attribuer à ce <DIV> une taille et un id.
Par exemple :
<div id="map" style="width: 400px; height: 400px"></div>
Pour afficher une carte il est nécessaire d’instancier (de créer) un objet « carte » grâce à la class Gmap2().
En argument, vous devez passer le div (container) où vous souhaitez insérer la carte :
var map = new GMap2(document.getElementById("map"));
Ensuite, il faut indiquer à l’objet carte où elle doit se centrer en utilisant la méthode setCenter(). En argument vous devez indiquer les coordonnées géographiques (latitude x et longitude y ) à travers l’objet GLatLng() ainsi que le niveau d’échelle ainsi si besoin le type de carte.
map.setCenter(new GLatLng(48.881986, 2.420829), 10);
Et voilà, vous avez tout ce qu’il vous faut pour afficher une carte. En résumé, voici le script complet :
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script xsrc="http://maps.google.com/maps?file=api&v=2&key=abcdefg" mce_src="http://maps.google.com/maps?file=api&v=2&key=abcdefg"
type="text/javascript"></script>
<script type="text/javascript">
function load() {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(48.881986, 2.420829), 13);
}
</script>
</head>
<body onload="load()">
<div id="map" style="width: 400px; height: 400px"></div>
</body>
</html>
Dans cet exemple, la création de la carte se fera lors du chargement complet de la page à travers la fonction load() pour éviter des problèmes de chargement.

Voici la première partie, d’autres vont suivre pour expliquer les intéractions possibles avec la carte. N’hésitez pas à laisser des commentaires!


15 commentaires
1 Olivier Masselis // 23 octobre 2006 à 11:24
Les API google maps sont formidables, mais il faut que la communauté des développeurs prennent conscience qu’en aucun cas « Cette application cartographique en javascript n’est totalement gratuite ». Nous sommes pour l’instant dans la phase béta gratuite que Google a l’habitude d’utiliser pour lancer ses nouveaux produits et écraser la concurrence. Mais cela ne vas pas durer comme j’en parle dans mon blog http://visionair.wordpress.com, pour la simple raison que Google n’est pas une association caritative.
D’ailleurs la semaine dernière Google a enfin précisé en français ses conditions d’utilisation: soit vous accepter de la publicité sur vos cartes, soit vous payez, et le forfait minimum est 10 000 euros.
2 Yann // 23 octobre 2006 à 11:41
Excellent tuto. Connaissez vous http://www.housingmaps.com un Mash-UP entre Craig’s List et Google Maps. Ce type de service est vraiment très sympa. Un bon Mix d’API et d’Ajax sur fon de web 2.0. Je ne maîtrise pas encore Ajax mais voici un exemple relativement simple mis en place sur mon site d’immobilier –> http://www.immobilier-des-particuliers.com/carte-immobilier-france.php.
Qu’en pensez vous ?
3 Renaud // 23 octobre 2006 à 21:56
Merci pour vos commentaires
Olivier > il est vrai qu’il ne faut pas oublié que la publicité contextuelle va un jour pointer le bout de son nez sur Google Maps… Il faudra voir comment se comporte la concurrence.
Yann > Housing Maps est le premier ‘mashup’ Google Maps. Les services immobiliers en France avec un cartographie performante sont encore qu’
4 Hubert Guillaud // 26 octobre 2006 à 22:49
On attend avec impatience la suite des cours.
5 Mylena // 11 juin 2007 à 14:52
Bonjour,
Très bien ce petit article!
J’utilise actuellement l’API Google Maps pour géocoder des adresses
6 leremoir // 12 juin 2008 à 12:27
Bonjour,
Après avoir lu votre superbe tutoriel, je me permets de vous contacter afin de vous exposer mon problème.
j’ai voulu faire un test de googlemap avec un multidomaine (domaine monsite2 redirigé vers l’hébergement principal monsite1 sous forme www/monsite2)
Si je génère une clé Googlemap pour http://www.monsite1.com et que j’installe le tout ça marche nickel.
Si je teste sur http://www.monsite2.com (qui lui est redirigé de façon invisible sur www/monsite2/) que ce soit avec une clé « www.monsite1.com » ou une clé « www.monsite2.com », ça ne marche pas!
il doit y avoir un problème lié au multidomaine je crois…
7 Ariden // 28 octobre 2008 à 17:37
Bonjour,
Je viens de découvrir les clés Api de google, je trouve que le principe est bien.
Cepcendant lorsque je lance mon programme proposé par google (ou même celui qui est proposé au dessus)avec ma clé API générer pour le local par le biais de l’adresse : http://localhost ou http://172.0.0.1, j’ai un message qui m’apprend que Gmap2 est indéfini.
S’auriez vous m’expliquer pourquoi.
A priori il ne repert pas le fichier classe Gmap2, faut il le télécharger quelque part?
Merci d’avance
8 karen // 4 novembre 2008 à 18:56
Bonjour,
Je suis à la recherche d’une aide concernant la clef API de google maps.
Mon problème est le suivant : J’ai fourni l’URL du site sur lequel j’ai besoin d’une clé API de google maps(http://www.monsite.com), google maps m’a fourni cette fameuse clé. Mais en l’utilisant la réponse est la suivante : la clé qui s’utilise pour ce site web a été enregistrée pour un autre site web. Afin de recevoir une autre clé correspondant au site web veuillez consulter http code google.com/apis/map.
Je ne comprends pas pourquoi ma clé ne fonctionne pas, alors qu’en interne la carte est parfaitement visualisable.
J’ai également utiliser http://monsite.com et celà ne fonctionne pas non plus.
Merci d’avance.
9 charolais // 22 janvier 2009 à 12:27
Bonjour,
je me permets de chercher une info un peu partout au sujet de la google map …
J’ai installé une map basique sur mon site qui fonctionnait parfaitement depuis des mois. J’ai voulu la modifié pour l’améliorer et voila que plus rien ne fonctionne …
Enfin je me retrouve avec une carte grise et un zoom au taquet en distant alors que ma carte fonctionne à merveille en local.
Quelqu’un aurait il déjà subi ce genre de bug ?
Merci.
10 gus_air // 20 mars 2009 à 19:08
Bonjour, je débute sur les API googlemap et suis bloqué.
En fait je cherche à placer sur une carte des marqueurs récupérés dans une base mysql.
Certains ont seulement une adresse donc ‘geocoder.getLatLng’, pas de souci. Mais d’autres point ont en plus des coordonnées (lat, lng).
Pour un souci de rapidité, je souhaiterais qu’il se base sur (lat, lng) pour ceux qui en ont et (adresse) pour ceux qui n’en n’ont pas. J’espère que c’est pas trop confu. Voici mon code et merci de votre aide.
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById(« map »));
geocoder = new GClientGeocoder();
function createMarkersEtbl(i) {
var coordonees = etbl[i][4];
if (coordonees) {
var point = new GLatLng(coordonees);
alert(point);
var marker=(new GMarker(point));
batchEtbl.push(marker);
var infoTabs = [
new GInfoWindowTab("Adresse", (''+etbl[i][3]+ »+etbl[i][1]+’<? echo « » ?>’+etbl[i][1]+ »)),
];
GEvent.addListener(marker, « mouseover », function() {
marker.openInfoWindowTabsHtml(infoTabs);
});
GEvent.addListener(marker, « click », function() {
window.location.href = etbl[i][2];
});
if (i+1<etbl.length) {
createMarkersEtbl(i+1);
} else {
mgr.addMarkers(batchEtbl, 5);
mgr.refresh();
}
} else {
if (geocoder) {
geocoder.getLatLng(etbl[i][0], function(point) {
if (point) {
var marker=new GMarker(point);
batchEtbl.push(marker);
var infoTabs = [
new GInfoWindowTab("Adresse", (''+etbl[i][3]+ »+etbl[i][1]+’<? echo « » ?>’+etbl[i][1]+ »)),
];
GEvent.addListener(marker, « mouseover », function() {
marker.openInfoWindowTabsHtml(infoTabs);
});
GEvent.addListener(marker, « click », function() {
window.location.href = etbl[i][2];
});
}
if (i+1<etbl.length) {
createMarkersEtbl(i+1);
} else {
mgr.addMarkers(batchEtbl, 5);
mgr.refresh();
}
});
}
}
}
map.setCenter(new GLatLng(48.9, 2.3), 5);
map.addControl(new GMapTypeControl());
map.addControl(new GSmallMapControl());
map.enableScrollWheelZoom();
map.addControl(new GOverviewMapControl());
map.addControl(new GScaleControl());
centrecarte(address);
createMarkersEtbl(0);//lancement de la fonction permettant de créer les markers des pays
mgr = new GMarkerManager(map);//on créer un marker manager//création d’un manager de marker
}
}
11 Cayrol // 11 septembre 2009 à 22:15
Merci pour votre tuto…
Ma question : j’aimerais ajouter des objets sur ma map (marqueurs ou autre) mais j’aimerais les orienter…
Dois je plutot utiliser Google Earth API ?
12 philou // 2 décembre 2009 à 16:13
Bonjour d’un gars qui ne comprend vraiment pas grand chose à l’informatique.
Je me pose une question qui va surement vous paraitre bête mais tant pis, j’assume.
Google map propose un lien à insérer dans son site pour faire apparaitre sa propre carte (et ça marche) alors pourquoi toute votre programmation pour obtenir le même résultat ?
C’est quoi la différence ?
Merci et A+
13 Manu // 2 décembre 2009 à 16:24
Salut Philou,
chacun pourra te donner une version différente en fonction de ses propres critères mais on peut citer :
- le plaisir de coder
- maitriser un outil sans se contenter d’être « utilisateur-consommateur »
- personnaliser l’outils (différents icones pour différents type de lieux à marquer)
- possibilité de mettre plusieurs lieux
etc … etc
Cordialement Manuel
14 Charolais // 2 décembre 2009 à 16:27
Comme le dit Manuel tu peux mettre plusieurs lieux:
http://www.charolais-boulonnais50.com/portesouvertes-960-Outils-visites-ventes.htm
j’avais fait ca pour les portes ouvertes charolais l’an dernier.
Je ne crois pas me souvenir que tu puisses mettre les informations que tu veux en ne mettant qu’un lien google dans une page
15 franck // 3 décembre 2009 à 12:48
Bonjour,
l’un de vous serait il interesse pour venir paler de nouvelles fonctionnalirtés sur les sites d’itinéraires?
Vednredi 4 decembre
de 20h00 à 22h30
Avenue de l’Opéra
Pour vous remercier de nous avoir donné votre avis, nous vous remettrons un cheque bancaire de 45€.
il reste encore quelques places, c’est pour demain!
merci par avance
Franck
06 60 65 15 52
Laissez un commentaire!