Manca ancora una cosa da personalizzare, ovvero il livello di zoom della mappa. Nel nostro esempio è impostato a 13, ma può andare da 0 (il livello di zoom più ampio) a 19.
C’è davvero bisogno che vi dica in dettaglio come fare? Suvvia, abbiamo fatto cose ben più difficili in questo capitolo. Si tratta solo di aggiungere una variabile $zoom ed un metodo setZoom alla classe.
Ho inserito un controllo nel caso in cui si imposti lo zoom fuori dal range dei valori 0-19.
Ecco il codice completo della classe, in cui evidenzio le righe di codice aggiunte o modificate per lo zoom:
<?php
class PhpGoogleMap {
// variabili membro della classe
private $apikey;
private $dimX;
private $dimY;
private $latitude;
private $longitude;
private $address;
private $zoom;
function __construct($_apikey){
$this->apikey = $_apikey;
$this->dimX = 500;
$this->dimY = 300;
$this->latitude = 0;
$this->longitude = 0;
$this->address = "";
$this->zoom = 13;
}
function renderJS(){
echo "
<script src=\"http://maps.google.com/maps?file=api&v=2&key=". $this->apikey ."&sensor=false\" type=\"text/javascript\">
</script>
";
// assegna alla variabile $JScenterMap il codice necessario a centrare la mappa
if($this->address!=""){
$JScenterMap = "
var geocoder = new GClientGeocoder();
geocoder.getLatLng(
'".$this->address."',
function(point) {
if (!point) {
alert('".$this->address."' + \" not found\");
} else {
map.setCenter(point, ".$this->zoom.");
}
});
";
} else {
$JScenterMap = "map.setCenter(new GLatLng(".$this->latitude.", ".$this->longitude."), ".$this->zoom.");";
}
// inizializza la mappa
echo "
<script type=\"text/javascript\">
window.onload = initialize;
window.onunload = GUnload;
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById(\"map_canvas\"));
$JScenterMap
map.setUIToDefault();
}
}
</script>
";
}
function renderHTML(){
echo "<div id=\"map_canvas\" style=\"width: ".$this->dimX."px; height: ".$this->dimY."px\"></div>";
}
function setDimensions($x, $y){
$this->dimX = $x;
$this->dimY = $y;
}
function setCoordinates($lat, $long){
$this->latitude = $lat;
$this->longitude = $long;
$this->address = "";
}
function setAddress($address){
$this->address = $address;
}
function setZoom($zoom){
if($zoom>19){
$zoom = 19;
}
if($zoom<0){
$zoom = 0;
}
$this->zoom = $zoom;
}
}
?>
Evito di riproporvi il codice del file base.php, ormai avreste aver capito il funzionamento. Provate ad includere una mappa in una vostra pagina internet, se avete un sito personale.
La classe è ora completamente parametrizzata nelle sue funzioni base ed è già utilizzabile. I prossimi passi consisteranno nell’aggiunta di nuove funzionalità e caratteristiche. A presto!

