Je vous en parlais il y a quelque jours, le voila! Un petit tutoriel pour faire un mashup avec google maps sur votre site. J’ai réalisé un site début janvier pour l’école : www.le-passe-livre.com qui utilise google maps.
- Vue d’ensemble du tutoriel
Nous allons utiliser une classe php (une fois de plus :-)) qui va nous permettre d’utiliser très simplement l’API de google. Comme presque toutes les API’s vous devez obtenir une clé pour pouvoir utiliser le service. Puis nous construirons notre google map en plaçant nos marqueurs sur la carte. Enfin nous l’afficherons.
- Télécharger la classe et activer l’API
Vous pouvez télécharger la classe ici. Créez un dossier “classe” à la racine de votre site et décompressez l’archive à l’intérieur. Vous devez maintenant obtenir la clé qui va vous permettre d’utiliser l’API de google maps. Pour pouvoir tester votre site en local indiquez http://127.0.0.1/ pour l’url de votre site.
- Création de la carte google
Je pense que le code est assez bien commenté. On créé une instance de notre carte, puis on fait le lien avec la clé google et on définit les caractéristiques de notre carte (taille,type de carte,etc etc).
- <?php
- require('includes/GoogleMapAPI.class.php');
- $map->setAPIKey(’ABQIAAAAvjgjZ_Oh4DGvoa**************************EVoKaUlRpjBXuG0QTOhSYyitCXehqvZywz4H1mACoA3Y0nQ’);
- //quand je développe je met en comentaire la clé vers mon site //$map->setAPIKey(’ABQIAAAAvjgjZ_Oh4DGvoa**********************************KHDfvBQMU1YWoN3PfZpU2lJl5oJWX0pRyg’);
- //taille de la map
- $map->setHeight(”400″);
- $map->setWidth(”600″);
- //on desactive la barre de coté?
- $map->disableSidebar();
- //DesActive les boutons(map/satellite/hybrid).
- $map->disableTypeControls();
- //Quel est le type de carte par defaut ? (map/satellite/hybrid)
- $map->setMapType(’map’); // default
- //On déssactive les boutons pour afficher la direction d’un point a l’autre
- $map->disableDirections();
- // Permet de definir le zoom automatiquement afin de voir tous les marqueurs d’un coup.
- $map->enableZoomEncompass();
- //Active la mini map en bas a droite
- $map->enableOverviewControl();
Notre carte est créée. Cependant elle est vide.
- Création d’un marqueur
Il existe plusieurs façons de placer un marqueur. Soit par géolocalisation (en indiquant la longitude et la latitude), soit en indiquant l’adresse. Je vous présente uniquement la seconde méthode car il me semble que c’est la plus facile à mettre en œuvre. La méthode que nous utilisons, addMarkerByAdress, prend 3 arguments : l’adresse, le nom du marqueur, est le contenu que nous souhaitons afficher dans l’infobulle. Si vous souhaitez que votre infobulle comporte des onglets il faut passer un tableau en paramètre.
- //Mon chez moi :p
- $map->addMarkerByAddress(’16 rue du 71ème mobile, 87000 Limoges’,
- ‘Chez moi’,
- ‘Adresse’=>’
- 16, rue du 71ème mobile
- ’,
- ‘La ville’=>’
- <h1>Limoges</h1>
- C’est une ville agréable et relativement dynamique
- ’,
- ‘1ère année’=>’
- <ul>
- <li>Web : HTML, XHTML, CSS, AJAX, PHP, SQL.</li>
- <li>Analyse : Bases de la méthode Merise.</li>
- <li>C : Suivis du cursus de 1ère année à <a href="”www.3il.fr”">3il</a>.</li>
- <li>Environnement de travail : Eclipse, Linux, Windows.</li>
- <li>Anglais : Niveau scolaire.</li>
- </ul>
- ’,
- ‘Extra’=>’
- <ul>
- <li>Capitaine des espoirs de l’USAL</li>
- <li><a href="”http://newsussel.free.fr”" target="”_blank”">Premier site internet</a></li>
- </ul>
- ’));
- ?>
Comme vous pouvez le voir, les onglets peuvent contenir du code XHTML (et donc être mis en forme grâce aux CSS). Il ne reste plus qu’à afficher votre carte!
- Afficher la google map
Petite explication préalable : la classe permet de nous simplifier la tâche en créant le javascript à notre place. Nous avons donc les appels du javascript à générer dans notre “head” XHTML. De plus le javascript doit être exécuter une fois la page chargée. Nous appellerons donc une fonction sur l’événement onload de la balise body. Notre page sera fin prête à être affichée.
- <!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">
- <head>
- //nos fonctions javascript sont généres ici
- <?php $map->printHeaderJS(); ?>
- <?php $map->printMapJS(); ?>
- <link rel="stylesheet" type="text/css" href="styles.css" media="all"/>
- </head>
- <body onload="onLoad()">
- <div id="”map_map”">
- //la carte
- <?php printMap(); ?>
- //les raccourcis vers les marqueurs (2eme paramètre des marqueurs)
- <?php printSidebar();?></div>
Il ne nous manque plus que les styles à créer.
- Les styles CSS
Créez un dossier “styles” à la racine de votre site puis rajoutez y un fichier styles.css.
- /******gmap**************/
- /* parait indispensable*/
- v\:* {
- behavior:url(#default#VML);
- }
- /*pour les infobulles de la carte*/
- #gmapmarker {
- font: normal small verdana, arial, helvetica, sans-serif;
- font-size: 10pt;
- margin: 0px;
- width: 250px;
- height: 100px;
- overflow:auto;
- }
- #map {
- float : left;
- }
Ça y est! Vous devriez avoir une belle carte sur votre page! La prochaine fois nous modifierons le script pour générer les marqueurs dynamiquement en fonction d’une base de donnée.
Ça marche chez vous? Vous avez fait les fous en rajoutant une image provenant de chez flickr dans votre infobulle? Montrez moi tout ça!
Autres articles intéressants :
- [css] bien comprendre les "floats"
- [gestion] liste d'outils de gestion de projet by smashing mag
- [adobe] version de démo de la suite CS4
- [design] [kuler] enfin de l'harmonie dans nos couleurs
- [google] actualité récente et nouveautés
Articles les plus actifs :
- [tuto jquery] drag ‘n drop avec sauvegarde automatique en base de données (2/2) (28)
- [tuto mashup] Google maps sur votre site : c'est possible! (version statique) (22)
- [tuto jquery] drag ‘n drop avec sauvegarde automatique en base de données (1/2) (19)
- [tuto web] cadre avec bordures extensibles valide xhtml/css (17)
- [tuto mashup] Galerie photo animée via Flickr : animer votre galerie (2/2) (17)
- [vu sur le net] #1 résumé (7)
- [tuto flex] hello world en flex: il y a un début à tout! (6)
- [vu sur le net] #2 dominante développement et entrepreneuriat (6)
- Qui suis-je? (4)
- [annonce] La patate "fuzz" sur le web!! (et j'aime pas olivier martinez :p) (4)














![[certification MySQL] du nouveau sur les dates !](http://antoine.guiral.info/wp-content/themes/Forte-fr/images/no-image.gif)










Je suis un passionné du monde du web et plus particulièrement du développement web. Principalement autodidacte je suis également en dernière année d'école d'ingénieur en informatique à 3IL. Je vous fait part dans ce blog de ma passion et de mes découvertes.
Bonjour, et merci pour ce tuto.
Pour ma part, quand j’actualise ma page, odnc ma carte, certains marqueurs disparraissent, puis réapparaissent le coup suivant, comme si j’avais un certain affichage aléatoire.
J’affiche dynamiquement une cinquantaine de lieux en France, à partir de l’association CP-Ville, cela après interrogation via requete SQL de ma BDD.
Peux-être trop de requêtes de géolocalisation en peu de temps qui fait que certaines passent “à la trappe” ???
Si quelqu’un a une idée, je suis preneur !
Merci