Api google maps!

Api google maps!

Description

Comment mettre en place l'API GOOGLE MAPS?
À la base l'API que google propose est réalisée en JScript ; donc pas intéressant pour nous autres développeurs en PHP purs et durs (^^).
Heureusement de plus en plus de classes PHP ont vus le jour pour générer le JScript de l'API GOOGLE; analysons en une: N/X API to Google Maps.

Préambule

Pour la classe N/X API, vous pouvez soit la télécharger ici (inscription nécessaire) soit la trouver dans le ZIP disponible ici.

Note : le script original n'est pas W3C valid donc je me suis permis d'optimiser la class originale (cf fin du tutorial).

Une fois installée dans le répertoire d'exécution (ou dans n'importe quel autre sur votre serveur), nous allons nous intéresser de près à la génération du JS.

Avant toute chose il vous faut une clef (API KEY) gracieusement fournie par Google à cette adresse. Pour ce faire vous devez possédez un compte google, accepter (aveuglement ^^) la charte et indiquer le site sur lequel vous désirez installer votre API. (Si votre script est installé dans une sous répertoire n'oubliez pas de l'indiquer !). Cette clef est une sorte de HASH à la mode Google du dossier de votre site donc si vous voulez changer de place votre page PHP qui génère la MAP faite les maintenant, ou alors il vous faudra redemander une clé valide à Google.

Créons un fichier PHP basique

Ouvrer une de vos pages modèles si vous en avez et définissons :

<?php

define(GoogleMapsKey, '<GoogleAPIKey>');
require "nxgooglemapsapi.php"; // Include de la classe
$api = new NXGoogleMapsAPI(); // instanciation de la classe
$api -> setHeight(600); // hauteur de la map
$api -> setWidth(800); // largeur de la map
$onLoad = $api->getOnLoadCode();
$contenuMAP = $api-> getBodyCode ();

?>

<html>
<head>
  <?php echo $api->getHeadCode(); ?>
</head>
<body onLoad="<?php echo $onLoad;?>">
  <?php echo $contenuMAP; ?>
</body>
</html>

Et voilà, ce n'était pas si compliqué ^^

Quelques fonctions encore intéressantes :

$api->addControl(GLargeMapControl); Boutons de contrôle

$api->addControl(GMapTypeControl); // Menus de choix de type de carte (map, satellite, mixte)

$api->setZoomFactor(16); // Définition du zoom d'affichage initial

$api->addControl(GOverviewMapControl); // Petite carte en bas à droite

// Créer une bulle par rapport à une adresse ; la troisième valeur définit 
//si la bulle doit représenter le centre de la carte. (Si plusieurs true, le dernier fait foi)
$api->addAddress("adresse, pays", "Texte de la bulle (TXT/HTML)", (true/false));

$api-> setCenter ((int) $long, (int) $lat)) // Positionne la carte p/r aux coordonnées

Finalement quelques améliorations du script (W3C valid) :

Ligne 202 : remplacer par :

<script src="http://maps.google.com/maps?file=api&v=2&key='.$this->apiKey.'" type="text/javascript"></script>';

Le probleme est que les symboles ET ("&") ne sont pas valides donc on les remplaces par "&"

Ligne 104 : remplacer par :

$ar = array(addSlashes($address), str_replace("</","<\/",addSlashes($htmlinfo)), $setCenter);

Comme l'indique la doc du W3C (ici) , il faut utiliser une barre oblique inverse pour empêcher que la chaîne soit interprétée comme du balisage JS.

A voir également
Ce document intitulé « Api google maps! » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous