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, 1 324 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, 830 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, 1 545 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







2 juin 2010 - 21 h 10 min
Merci pour la suppression. En plus je viens de voir que le code complet n’a pas été pris en compte.
Concernant l’erreur j’ai placé des alerts un peu partout dans mon code. Tout fonctionne jusqu’au moment on arrive aux lignes suivantes :
var mgr = new MarkerManager(map);
mgr.addMarkers(marker, 4);
mgr.refresh();
Ce sont ces lignes qui doivent faire apparaitre les clusters mais les alerts placés a ces endroits ne fonctionne pas.
J’utilise firebug mais ca ne m’indique pas d’erreur… Vu que le code ne s’est pas complétement afficher dans le précèdent post je vais l’afficher en re-postant juste après.
Je vous remercie. Cordialement, Apprenti
7 juin 2010 - 10 h 10 min
Bonjour,
je viens de voir que le code n’a pas éte posté en entier.
Voici le code complet :
function createMarker(point,nom,url) {
var marker = new GMarker(point);
var html = « « +nom+ »« ;
GEvent.addListener(marker, « click », function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
function initialize() {
if (GBrowserIsCompatible()) {
// Les fonctions de base pour initialisé la carte
var urlstr = « http://……..php »;
alert(« ajax javascript »);
GDownloadUrl(urlstr, function(data) {
var xml = GXml.parse(data);
alert(« Creation marqueur »);
var markers = xml.documentElement.getElementsByTagName(« marker »);
alert(« la boucle for »);
for (var i= 0; i
‘;
En vous remerciant par avance,
Apprenti
5 août 2010 - 13 h 53 min
Bonjour,
je me demandais si la carte généré par ce script PHP est une API Google Map V2 ou V3. Je demande ceci car la V2 est obselete et donc ne marchera plus dasn moins de trois ans.
Merci d’avance.
David
5 août 2010 - 23 h 36 min
Non cela fonctionne pour la V2, toujours pas eu le temps de voir pour la V3. La v2 n’est pas obselete c’est juste le support qui s’arrêtera dans quelques temps (3 ans effectivement).
Mais bon c’est vrai qu’il faudrait que je le convertisse…