Google Maps API
Voici une classe PHP assez complète qui vous permet de manipuler facilement des Google Maps. Cette classe gère pas mal de choses au niveau du javascript d’une gmap comme la gestion de catégories de marqueurs, les itinéraires, l’insertion de flux XML, la clusterisation (regroupement de marqueurs), l’affichage d’infobulles, la geolocalisation d’une adresse etc…On utilise donc cette classe pour générer le javascript dont on pourra se servir dans notre code HTML.
On peut facilement obtenir des rendus de ce style :

Avant de commencer, il est impératif d’avoir une clef google maps que l’on obtient rapidement sur ce lien : google maps signup. Le constructeur de cette classe « new GoogleMapAPI() » prend en paramètre cette clef, elle est donc essentielle au bon fonctionnement du programme.
La classe est plutôt bien commentée (en anglais) mais voici 2 exemples d’utilisations de la classe qui montrent différentes possibilités. Cela permet également de se faire une idée sur le code source généré.
Attention : les requêtes de geocoding sont limitées à 15000/24h/IP, il se peut donc que les démos ne fonctionnent pas en fin de journée.
Google Maps simple avec marqueurs et itinéraires
...
require('GoogleMapAPI.class.php');
$gmap = new GoogleMapAPI('***');
$gmap->setDivId('test1');
$gmap->setDirectionDivId('route');
$gmap->setCenter('Nantes France');
$gmap->setDisplayDirectionFields(true);
$gmap->setSize(600,600);
$gmap->setZoom(11);
$gmap->setDefaultHideMarker(false);
// cat1
$coordtab = array();
$coordtab []= array('nantes france','<strong>html content</strong>');
$coordtab []= array('carquefou france','<strong>html content</strong>');
$coordtab []= array('vertou france','<strong>html content</strong>');
$coordtab []= array('rezé france','<strong>html content</strong>');
$gmap->setIconSize(20,34);
$gmap->addArrayMarkerByAddress($coordtab,'cat1','markerpics.png');
// cat2
$coordtab = array();
$coordtab []= array('saint-herblain france','<strong>html content</strong>');
$coordtab []= array('bouguenais france','<strong>html content</strong>');
$coordtab []= array('orvault france','<strong>html content</strong>');
$gmap->addArrayMarkerByAddress($coordtab,'cat2');
$gmap->generate();
echo $gmap->getGoogleMap();
...
Code source de l’exemple :
simple.php (5,6 KiB, 694 hits)
Google Maps avancée avec clusterisation (1600 marqueurs) issus d’un fichier KML
...
require('GoogleMapAPI.class.php');
$gmap = new GoogleMapAPI('***');
$gmap->setDivId('test1');
$gmap->setCenter('Nantes France');
$gmap->setDisplayDirectionFields(true);
$gmap->setClusterer(true);
$gmap->setSize(600,600);
$gmap->setZoom(7);
$gmap->addKML('kml/Locator3RF.kml','radars_fixes','Locator3RF.png');
$gmap->generate();
echo $gmap->getGoogleMap();
...
Démonstration (zoomer/dezoomer pour voir la clusterisation)
Code source de l’exemple :
advanced.php (2,9 KiB, 432 hits)
Pour utiliser la clusterisation vous devez avoir les fichiers suivants :
Image du cluster
Fichier KML
Fichier markerclusterer_packed.js (Thanks to http://gmaps-utility-library.googlecode.com/)
Télécharger la GoogleMapAPI.class.php
GoogleMapAPI.class.php (16,8 KiB, 801 hits)
Changelog
[23/09/2009]
- Implémentation de la fonction de centre+zoom lorsque l’on clique sur l’un des marqueurs. Le niveau du zoom sur les marqueurs peut se régler avec la méthode PHP : setInfoWindowZoom().
- Implémentation d’une fonction pour que la google maps centre/zoom automatiquement en fonction des marqueurs au chargement de la carte : setEnableAutomaticCenterZoom(true).
[23/07/2009]
- Correction du bug de langue
[29/06/2009]
- changement de la librairie de clusterisation : http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/src/ (Merci à Philippe Ivaldi)
[25/06/2009]
- ajout de la méthode javascript « showAddress() » qui permet de centrer la carte sur une adresse
- ajout de la méthode javascript « showAll() » qui affiche tous les marqueurs
- ajout de la méthode javascript « hideAll() » qui cache tous les marqueurs
- renomage des méthodes « hide() » et « show() » en « hideCategory() » et « showCategory() » pour un soucis de compatibilité
[19/06/2009]
- correction du bug de rafraichissement des itinéraires
[27/05/2009]
- utilisation de curl pour récupérer le xml (merci à Desfrênes Mickaël)
- reformatage du code selon les recommandations PEAR
- ajout des tags dans les commentaires (phpdoc, doxygen, IDE, …)
- modification de la portée des variables
[26/05/2009]
- Release initiale
- Google Maps API en PHP – CERDAN Yohann
- » Mini-tutorial Google maps en PHP
- Twitted by Apen_
- Utiliser les fonctions de l’API Google Maps sur votre site (en PHP)
- Google Maps API | traffic-internet.net
- vivanno.com::aggregator » Archive » Google Maps API
- Twitted by trenault
- développement web en PHP pour insertion de gmaps dans un site « KINAXIA







4 décembre 2009 - 20 h 10 min
Bonjour, j’essaie depuis plusieurs heures d’ intégrer un fichier .kml venant de Google Earth à un de mes sites à l’aide de l’api.
Mon problème est que ça fonctionne très bien avec les villes mais pas avec les trajets.
Est ce que quelqu’un peu m’aiguiller s’il vous plaît?
Merci
15 décembre 2009 - 18 h 28 min
Enorme, merci pour ton travail, c’est exactement ce que je cherchais. Je galère juste pour dé zoomer au maximum la google map lorqu’il n’y a qu’un seul marker. J’ai eu beau changer les valeurs dans le php et dans la classe, rien n’y fait.
Aussi, est-il possible de choisir la vue ’satellite’ comme vue par défaut ?
15 décembre 2009 - 19 h 59 min
@amethyste
il faut bien que $gmap->setEnableAutomaticCenterZoom(false); soit a false pour éviter le calcul automatique et après tu devrais pouvoir jouer avec le zoom.
15 décembre 2009 - 20 h 10 min
Ca marche impec ! Merci beacoup.