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();
...

Démonstration

Code source de l’exemple : Télécharger le fichier "simple.php"

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 : Télécharger le fichier "advanced.php"

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

Télécharger sur le repository github