Google Map API V3 : Placer un marker sur la carte
L'objectif de ce billet est de créer une carte Google Map sur laquelle nous localiserons un cinéma Pathé. Nous placerons à cette endroit un logo Pathé à la place de l'image classique des Marker Google Map. Enfin nous adjoindrons une fenêtre d'informations à ce Marker qui proposera de se rendre sur le site officiel du cinéma.
Placer un Marker
Nous allons utiliser l'objet Marker de l'API Google Map. Son constructeur prend un seul paramètre, un tableau statique d'options :
- position définit la position du Marker sur la carte et prend un objet de type LatLng.
- map définit la carte sur laquelle afficher le Marker et prend donc un objet de type Map.
- title définit le texte qui sera affiché au survol de la souris et prend une chaîne de caractères classique.
// Coordonnées du cinéma Pathé Bellecour Lyon var myLatlng = new google.maps.LatLng(45.758796,4.834607); // Carte centrée sur le cinéma, zoom 16 var myMapOptions = { zoom: 16, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; // Création de la carte var myMap = new google.maps.Map( document.getElementById('map'), myMapOptions ); // Création du Marker var myMarker = new google.maps.Marker({ // Coordonnées du cinéma position: myLatlng, map: myMap, title: "Cinéma Pathé Bellecour" });
Vous pouvez observer le rendu de ce premier exemple.
Personnaliser l'icône du Marker
Nous allons maintenant remplacer l'image classique des Marker Google Map par une image de notre choix. Pour notre exemple, j'ai choisi un logo Pathé de petite taille et sur fond transparent. Bien sûr, n'importe quelle image fonctionne.
Pour cela, nous allons créer un objet de type MarkerImage et lui donner comme paramètre l'URL de l'image que nous souhaitons utiliser comme icône de notre Marker. Il existe d'autre paramètres supplémentaires optionnels qui permettent par exemple de ne prendre qu'une seule partie d'une image, ou encore de définir le point d'encrage de notre image, etc. Je vous invite à consulter la documentation officielle si vous souhaitez utiliser ces fonctionnalités.
// Cinéma Pathé Bellecour var myLatlng = new google.maps.LatLng(45.758796,4.834607); // Carte centrée sur le cinéma var myMapOptions = { zoom: 16, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; // Création de la carte var myMap = new google.maps.Map( document.getElementById('map'), myMapOptions ); // Création de l'icône var myMarkerImage = new google.maps.MarkerImage('img/pathe.png'); // Création du marker var myMarker = new google.maps.Marker({ // Coordonnées du cinéma position: myLatlng, map: myMap, // Nous ajoutons un paramètre supplémentaire // icon pour lequel nous donnons le MarkerImage // que nous venons de créer. icon: myMarkerImage, title: "Cinéma Pathé Bellecour" });
Vous pouvez observer le rendu de ce deuxième exemple.
Ajouter une fenêtre d'information
Pour créer une fenêtre d'information, nous utiliserons l'objet InfoWindow qui prend en paramètre un tableau statique d'options. Plusieurs options sont disponibles mais nous ne verrons ici que l'option content qui permet de définir le contenu de la fenêtre en HTML. Cette objet s'utilise de la façon suivante :
// Options de la fenêtre var myWindowOptions = { content: '<h6>Cinéma Pathé Bellecour</h6>'+ '<p><a href="http://www.cinemasgaumontpathe.com/cinemas/cinema-pathe-lyon-bellecour/" title="Site officiel">Visiter le site officiel</a></p>' }; // Création de la fenêtre var myInfoWindow = new google.maps.InfoWindow(myWindowOptions);
Bien entendu, cette fenêtre ne s'affichera pas d'elle même. Pour l'afficher, il faut appeler la méthode open de l'objet InfoWindow. Cette méthode prend deux paramètres :
- map définit la carte sur laquelle afficher la fenêtre et prend donc un objet de type Map.
- anchor définit l'emplacement où la fenêtre doit être affichée. Il prend un objet de type MVCObject dont beaucoup d'autres dérivent et notamment l'objet Marker.
Nous souhaitons par ailleurs que cette fenêtre ne soit affichée que lorsque nous cliquons sur notre Marker. Pour cela, nous devons utiliser le gestionnaire d'évènement de l'API Google Map. Il s'utilise de la manière suivante :
google.maps.event.addListener( obj, event, handler);
Cette fonction prend donc trois paramètres :
- obj définit l'objet duquel proviendra l'évènement et prend n'importe quel objet de l'API.
- event une chaîne de caractère définissant le nom de l'évènement. click par exemple.
- handler définit la fonction à appeler lorsque l'évènement se produit.
Le script complet est donc le suivant :
// Cinéma Pathé Bellecour var myLatlng = new google.maps.LatLng(45.758796,4.834607); // Carte centrée sur le cinéma var myMapOptions = { zoom: 16, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; // Création de la carte var myMap = new google.maps.Map( document.getElementById('map'), myMapOptions ); // Création de l'icône var myMarkerImage = new google.maps.MarkerImage('img/pathe.png'); // Création du marker var myMarker = new google.maps.Marker({ // Coordonnées du cinéma position: myLatlng, map: myMap, // Nous ajoutons un paramètre supplémentaire // icon pour lequel nous donnons le MarkerImage // que nous venons de créer. icon: myMarkerImage, title: "Cinéma Pathé Bellecour" }); // Options de la fenêtre var myWindowOptions = { content: '<h6>Cinéma Pathé Bellecour</h6>'+ '<p><a href="http://www.cinemasgaumontpathe.com/cinemas/cinema-pathe-lyon-bellecour/" title="Site officiel">Visiter le site officiel</a></p>' }; // Création de la fenêtre var myInfoWindow = new google.maps.InfoWindow(myWindowOptions); // Affichage de la fenêtre au click sur le marker google.maps.event.addListener(myMarker, 'click', function() { myInfoWindow.open(myMap,myMarker); });
Vous pouvez observer le rendu de ce troisième et dernier exemple.


explication simples et efficaces un grand merci a
maximax31 | jeudi 18 mars 2010 | 18:08explication simples et efficaces un grand merci a toi !
Je n’ai pas réussi à le faire fonctionner, et
Nathan | samedi 20 mars 2010 | 20:38Je n’ai pas réussi à le faire fonctionner, et malgré que j’ai copié le code source après, rien ne s’affiche.
Pourquoi ?
Le code de l'exemple est parfaitement fonctionnel
Thierry Geindre | vendredi 9 avril 2010 | 11:49Le code de l'exemple est parfaitement fonctionnel comme le montre le rendu :
http://exemples.code-web.org/google...
Bases-toi peut être sur le code source de cette page.
Hi, je découvre tout juste l'existence de ce site
Porte blindee | dimanche 2 mai 2010 | 19:35Hi, je découvre tout juste l'existence de ce site et je suis assez surpris. Pour commencer le thème est très beau, mais je voulais plutôt discuter à propos d'un autre aspect, en effet, les différentes pages sont toutes biens rédigées et la plume que vous avez est différente de ce que l'on peut voir habituellemnt. Je m'abonne de suite au flux RSS pour ne rien manquer! A la prochaine.
Dis-moi, Pour afficher plusieurs markers, on fait
Gularu | mardi 17 août 2010 | 15:40Dis-moi,
Pour afficher plusieurs markers, on fait pareil mais du coup, toutes les infosbulles possèdent le meme texte, le dernier.
Une solution ?
Pour une petite démonstration des événements sur
mathieu | mercredi 1 septembre 2010 | 13:44Pour une petite démonstration des événements sur la v3 de l'API Google MAPS :
http://mdormeval44.free.fr/demos/00...
Le code source est librement téléchargeable...
Bonjour à tous, J'ai le même problème que Gularu,
Julien | mercredi 1 septembre 2010 | 18:22Bonjour à tous,
J'ai le même problème que Gularu, lorsqu'il y a plusieurs markers, tous les titres des markers sont les mêmes, celui du dernier marker.
Toujours pas de solution ???!
Merci
Merci Thierry, je viens juste d'utiliser ton tuto
superjeje | jeudi 23 décembre 2010 | 16:01Merci Thierry, je viens juste d'utiliser ton tuto pour caler un plan de contact sur le site d'aprores.
Bisous sur la fesse droite, à ce soir oubli pas la boisson!
Super! Merci pour les infos!
Petites Annonces | samedi 8 janvier 2011 | 00:15Super! Merci pour les infos!
L’EXPLICATION SIMPLE EST TRÈS BIEN FAIT
CLOCLO DU 26 | samedi 16 avril 2011 | 15:06L’EXPLICATION SIMPLE EST TRÈS BIEN FAIT
Très bon tuto clair et facile à mettre en place
kayorn | jeudi 21 avril 2011 | 10:21Très bon tuto clair et facile à mettre en place même quand on n'est pas développeur.
Je souhaite ajouter plusieurs markers sur ma
Cendy | mercredi 4 mai 2011 | 17:32Je souhaite ajouter plusieurs markers sur ma google map, mais quel que soit le nombre que j'en demande il n'en affiche que 5.
Quelqu'un a-t-il rencontré le même problème ou a une explication à cela ?
Merci
Juste un petit mot pour vous dire que ce tuto est
Electrolise | samedi 21 mai 2011 | 10:57Juste un petit mot pour vous dire que ce tuto est vraiment vraiment très bien fait! C'est le plus clair que j'ai trouvé.
Ce serait chouette de continuer avec les éléments plus compliqués, les onglets, les options, ...
J'avais le projet de continuer avec une liste de
Thierry Geindre | lundi 23 mai 2011 | 11:17J'avais le projet de continuer avec une liste de tutos à propos de l'API Google Map. Mais ça prend du temps...
Merci pour ce super tuto!
Jose | mercredi 8 juin 2011 | 09:16Merci pour ce super tuto!
Sympa le tuto, vivement la suite. (par contre vire
blackhat seo | lundi 13 juin 2011 | 13:53Sympa le tuto, vivement la suite. (par contre vire les commentaires pornos et autres spams, car rend le blog moins sérieux...)
Merci pour ce commentaire encourageant Je passe de
Thierry Geindre | mercredi 15 juin 2011 | 17:56Merci pour ce commentaire encourageant
Je passe de temps en temps supprimer tout ces commentaire indésirables, ce que je viens de faire à l'instant. Je test une nouvelle extension antispam, en espèrant que ce sera efficace cette fois-ci !
Hey! Your blog is totally awesome, I enjoy reading
seo tools | vendredi 29 juillet 2011 | 19:24Hey! Your blog is totally awesome, I enjoy reading it since I founded it in google on the first place. But why you are so deep for other search queries? It’s really unfair. I recommend you to use ProChecker to improve your Google rankings (you can explore more about it clicking on the link in the URL field - it’s not a spam, of course, just a friendly advice). Please Keep writing! Best regards, Steve.
http://www.uggbaileybuttonsale5803.... ugg bailey
ugg classic cardy sale | mercredi 9 novembre 2011 | 07:12http://www.uggbaileybuttonsale5803.... ugg bailey button sale
http://www.uggbaileybuttonsale5803.... ugg bailey button chestnut
http://www.uggclassictallsale5815.c... ugg classic tall sale
http://www.uggclassictallsale5815.c... ugg classic tall grey
http://www.uggclassicshortsale5825.... ugg classic short sale
http://www.uggclassicshortsale5825.... ugg classic short grey
http://www.uggbootsclassictallsale.... ugg classic tall sale
http://www.uggbootsclassictallsale.... ugg classic tall navy
http://www.uggbootsclassicshortsale... ugg classic short sale
http://www.uggbootsclassicshortsale... ugg classic short black
http://www.uggbootsbaileybuttonsale... ugg bailey button sale
http://www.uggbootsbaileybuttonsale... ugg bailey button bomber
http://www.uggbootscardysale.com ugg classic cardy sale
http://www.uggbootscardysale.com ugg boots sale
http://www.uggbootscardysale5819.co... ugg classic cardy sale
http://www.uggbootscardysale5819.co... ugg classic cardy black
http://www.uggbaileybuttontripletsa... ugg bailey button triplet sale
http://www.iuggsoutlet.com uggs outlet
http://www.womensbaileybuttontriple... ugg bailey button triplet
http://www.uggbootssaleukonline.co.... ugg boots sale uk
http://www.uggbootsclearancefor.us ugg boots clearance
http://www.louisvuittonoutlet2.us louis vuitton outlet
http://www.1thenorthfaceoutlet.com the north face outlet
http://www.uggsforcheaponsale.us uggs for cheap
http://www.uggsforcheaponsale.us uggs on sale
http://www.uggbootsonsale2.us ugg boots sale
http://www.uggbootsonsale2.us uggs on sale
http://www.cheapuggbootsoutletclear... ugg boots outlet
http://www.cheapuggbootsoutletclear... ugg boots clearance
http://www.uggbootscheaponsale.com ugg boots sale
http://www.uggbootscheaponsale.com cheap ugg boots
http://www.uggbootsoutletforcheapsa... ugg for cheap
http://www.uggbootsoutletforcheapsa... ugg boots outlet
http://www.uggsoutlet2.us uggs outlet
http://www.uggsoutletforcheap.us uggs outlet
http://www.uggsoutletforcheap.us uggs for cheap
http://www.uggsforcheapoutlet.us uggs for cheap
http://www.uggbootssaleto.us ugg boots sale
http://www.uggbootssaleukonlinestor... ugg boots sale uk
http://www.uggsonsaleto.us uggs on sale
http://www.uggbootsclearance2.us ugg boots clearance
http://www.uggbootsclearanceto.us ugg boots clearance
http://www.uggbootsoutlet2.us ugg boots outlet
http://www.uggsalebootsonline.com ugg boots sale http://www.louisvuittonoutletchrist... louis vuitton outlet