Post

Zoom e personalizzazione: il codice completo

In Diario, Personalizzazione on 21/12/2009 by paooolino

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!

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.