Jan 212013
 

Che cos’è uno spinner? Uno spinner è una funzione che migliora un input di testo per l’immissione di valori numerici, con l’aggiunta della gestione  dei tasti su / giù e il tasto di gestione freccia.

In questo breve esempio predisporremo due campi di input che conterranno le coordinate in cui centrare un google maps, modificanto le coordinate dall’input migliorato dallo spinner sposteremo la mappa.

Iniziamo ad inserire nel nostro file html tutte le librerie di cui abbiamo bisogno, jquery, jquery ui, il suo css, google maps, il plugin di jquery mousewheel:

<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="js/jquery.mousewheel.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>

Poi passiamo ad inserire nell’html della pagina i due campi di input e il div che ospiterà la mappa:


<label for="lat">Latitude</label>
<input id="lat" name="lat" value="44.797">
<br />
<label for="lng">Longitude</label>
<input id="lng" name="lng" value="9" >
<div id="map"></div>

Lo stile della mappa, giusto le dimensioni:


#map {width:500px;height:500px;}

Ora entriamo nel vivo: come prima cosa al document ready prepariamo una funzione che restituisca latitudine e longitudine prese dai dui input


function latlong() {
return new google.maps.LatLng( $("#lat").val(), $("#lng").val() );
}

Come secondo step creiamo una funzione per centrare la mappa in base al valore restituito dalla funzione precedente:


function position() {
map.setCenter( latlong() );
}

Creiamo la mappa nel modo consueto


var map = new google.maps.Map( $("#map")[0], {
zoom: 8,
center: latlong(),
mapTypeId: google.maps.MapTypeId.ROADMAP
});

E l’ultimo elemento cruciale: trasformiamo i due campi di input con lo spinner e predisponiamo l’incremento con il parametro step e poi agli eventi change e stop riposizioniamo la mappa con la funzione position()

$( "#lat, #lng" ).spinner({
step: .001,
change: position,
stop: position
});

L’esempio

Nov 112011
 

Per calcolare un itinerario e visualizzarlo sulla nostra Google Maps sarà necessario lavorare con i services messi a disposizione da Google. Dopo aver inserito la nostra mappa ed averla centrata possiamo procedere con le personalizzazioni necessarie: la prima di queste prevede l’inserimento nell’html della pagina di un secondo box, oltre a quello che ospita la mappa, dove inseriremo le “istruzioni di viaggio”:


<div id=”miamappa” style=” float:left; width:70%; height:650px;”></div>
<div id=”istruzioni” style=” float:left; width:30%; height:650px;”></div>

Nello scirpt innanzitutto modifichiamo il collegamento alla libreria specificando la lingua della risposta:


<script type=”text/javascript” src=”http://maps.googleapis.com/maps/api/js?sensor=false&language=it”></script>

Nella parte di script vera e propria definiamo due variabili:


var directionDisplay;
var directionsService = new google.maps.DirectionsService();

directionsService ci servirà per chiamare il servizio, mentre directionDisplay servirà per visualizzare le informazioni.

Ora la funazione che calcola il percorso:


function calcRoute() {
var start = ‘Milano’;
var end = ‘Varese, Italia’;
var request = {
origin:start,
destination:end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}

Le variabili start e end servono per stabilire i punti di partenza e arrivo, chiaramente possono esere recuperati da form, database, etc

Per il TravelMode possiamo scegliere fra driving e walking (in usa anche BICYCLING).

Le ultime istruzioni sono l’esecuzione della chiamata.

Per completare la pagina dobbiamo inizializzare la nostra mappa:


function inizializza() {
directionsDisplay = new google.maps.DirectionsRenderer();
var milano = new google.maps.LatLng(45.463681, 9.188171);
var mapOptions = {
zoom: 10,
center: milano,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map =  new google.maps.Map(

document.getElementById(“miamappa”),

mapOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById(“istruzioni”));
calcRoute();
}

dove si deve renderizzare il percorso e nelle ultime due istruzioni scrivere il percorso nel box di destra e disegnarlo sulla mappa.

Ecco l’esempio completo.

Nov 102011
 

Come creare delle aree circolari su una mappa, per esempio per mostrare dei cerchi in proporzione con la popolazione residente in una città?

A partire dalla Google Maps costruiremo un array contenente il centro del cerchio e un  valore che servirà a determinare il raggio, nel nostra esempio la popolazione, anche se i dati non sono reali.

Un elemento dell’array sarà dunque fatto in questo modo:


citymap['milano'] = {

center: new google.maps.LatLng(45.463681, 9.188171),

population: 1334077};

e così via per tutte le aree

La seconda parte è la creazione del cerchio dove all’interno di un ciclo che fa scorrere il nostro array:


for (var city in citymap) {
var populationOptions = {
strokeColor: “#FF0000″,
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: “#FF0000″,
fillOpacity: 0.35,
map: map,
center: citymap[city].center,
radius: citymap[city].population / 50
};
cityCircle = new google.maps.Circle(populationOptions);
}

definiamo colore, opacità e via via tutti i parametri che servono.

L’esempio completo

Nov 092011
 

Dove sono? E’ possibile visualizzare un marker che mi indica dove mitrovo su una mappa.

Dipende in realtà da quale browser sto usando e dalla modalità di accesso alla rete.

In questo momento (novembre 2011) la localizzazione che si base su html5 funzionerà su chrome, firefox, safari. Grande assente ie. E questo ovviamente allo stato attuale limita fortemente l’uso, se però la nostra applicazione è per un supporto mobile questo problema non si pone e oltretutto è ragionevole pensare di essere posizionati con la precisione del gps eliminando i margini di errori legati all’accesso a internet: chi proverà l’esempio si accorgerà che se accede con un normale accesso alla rete con ip dinamico ci sarà un margine di errore magari anche significativo, questo dipende da dove viene identificato l’ip.

Per il codice vedere la sorgente dell’esempio

Nov 072011
 

Proviamo ad aggiungere alla nostra solita Google Maps alcune coordina te e congiungerle fra di loro con una linea, come esempio immagineremo di disegnare sulla mappa di Milano un tratto della metropolitana gialle (linea 3).

Abbiamo due preprequisiti da soddisfare: avere a disposizione la Google Maps, e in secondo luogo avere le coordinate di tutti i punti dove vogliamo far passare la nostra linea.

Per tanto come prima cosa creeremo un array con tuttel le posizioni che ci interessano:


var lineagialla = [
new google.maps.LatLng(45.492405,9.192531), //zara
new google.maps.LatLng(45.489502,9.200706), //sondrio
new google.maps.LatLng(45.485124,9.203035), //centrale
new google.maps.LatLng(45.479031,9.197123), //repubblica
new google.maps.LatLng(45.475427,9.194232), //turati
new google.maps.LatLng(45.470202,9.192483), //montenapoleone
new google.maps.LatLng(45.464461,9.189221), //duomo
new google.maps.LatLng(45.460748,9.188079), //missori
new google.maps.LatLng(45.456428,9.194999), //crocetta
new google.maps.LatLng(45.451781,9.202863), //portaromana
new google.maps.LatLng(45.446809,9.210395), //lodi
new google.maps.LatLng(45.442406,9.218581)  //brenta
];

In secondo luogo andremo a congiungere questi punti con le seguenti istruzioni:


var metro3 = new google.maps.Polyline({
path: lineagialla,
strokeColor: “#FFFF00″,
strokeOpacity: 1.0,
strokeWeight: 4
});

metro3.setMap(map);

Dove path sarà il nostro array contenente le coordinate, strokeColor il colore della linea e poi definiamo l’opacità e lo spessore.

A questo punto non resta che aggiungere l’informazione alla mappa.

Ecco l’esempio

Nov 062011
 

Un problema molto frequente è che spesso vogliamo inserire un marker a partire da un indirizzo e non dalle sue coordinate che quindi dovranno essere calcolate in modo automatico.

L’oggetto che si occupa della traduzione in coordinate del nostro indirizzo si chiama geocoder e lo inizializziamo nella funzione che crea la mappa:


geocoder = new google.maps.Geocoder();

Successivamente, a partire da un indirizzo, chiameremo una funzione che si occuperà di tradurre l’indirizzo in coordinate e piazzare una marker nelle coordinate individuate:


function codeAddress() {
 var address = document.getElementById(“address”).value;
 geocoder.geocode( { ‘address’: address}, function(results, status) {
 if (status == google.maps.GeocoderStatus.OK) {
 map.setCenter(results[0].geometry.location);
 var marker = new google.maps.Marker({
 map: map,
 position: results[0].geometry.location
 });
 }
 else {alert(“Geocode non ha trovato la posizione per il seguente motivo: ” + status);}
 });
 }

La prima istruzione assegna alla variabile address l’indirizzo che in questo caso viene preso da un campo di input.

Successivamente richiediamo le coordinate; se l’operazione va a buon fine, cioè geocoderstatus è ok, le coordinate vengono restituite nell’array results (results[0].geometry.location)

in modo da centrare la mappa sulle nuove coordinate e aggiungere il marker. Se si verifica un errore comparirà un alert, volendo possiamo eliminare l’istruzione contenuta nell’else.

L’esempio completo

Nov 042011
 

Quando andiamo ad aggiungere più marker ad uan Google Maps potremmo avere l’esigenza di personalizzare l’iconcina segnaposto.

Dobbiamo quindi arricchire il codice di inserimento del marker con l’istruzione relativa all’icona da utilizzare:


var image=”icon/icona_01.png”

e in secondo luogo, alla definizione del marker andiamo ad aggiungere l’istruzione relativa all’icona:


var marker = new google.maps.Marker(
{position: x,title:”Primo Marker”,icon:image}
);

L’esempio propone una mappa con due marker diversi: vai

Nov 032011
 

Per aggiungere una descrizione ad un marker presente nella Google Maps dovremo decidere l’evento che permetterà la visualizzazione della descrizione, in genere è il click sul marker e ovviamente il testo da visualizzare. Quindi il codice javascript della nostra mappa dovrà essere personalizzato in questo modo:


var mieinfo = new google.maps.InfoWindow(
{content: “Mi trovo esttamente<br /><strong>qui</strong>”}
);

google.maps.event.addListener(
marker,
‘click’,
function() {mieinfo.open(map,marker);}
);

In pratica la variabile mieinfo serve per stabilire il testo che andremo a visualizzare;

mentre nella seconda riga aggiungiamo l’evento click al nostro marker.

L’esempio completo

Nov 022011
 

Per inserire un marker(segnaposto) in una Google Map,

bisogna personalizzare lo script di inserimento della mappa in modo opportuno:

all’interno dello script che creerà la nostra mappa aggiungiamo


var x = new google.maps.LatLng(45.44182,9.17500);
var marker = new google.maps.Marker({position: x,title:”web developer”});
marker.setMap(map);

x rappresenta le coordinate del punto in cui vogliamo piazzare il marker, mentre title sarà il testo in sovraimpressione.

Vedi l’esempio completo

Nov 012011
 

Come inserire una Google Maps nel proprio sito web?

Innanzitutto partiamo dalle versioni a nostra disposizione, attualmente lavoriamo con la versione 3, la documentazione e alcuni tutorial sono disponibili a questo indirizzo:

http://code.google.com/intl/it-IT/apis/maps/documentation/javascript/

Una novità di questa versione è che non è più necessario registrarsi e acquisire una chiave per usare le Google Maps.

La prima operazione è inserire nell’intestazione della pagina il collegamento alla libreria javascript: <script type=”text/javascript” src=”http://maps.googleapis.com/maps/api/js?sensor=false”></script>. Il parametro sensor può avere valore true o false, si metterà il parametro a true se si vuole avere la possibilità di usare la localizzazione gps.

Il secondo passaggio sarà quello di inserire nella propria pagina il box che conterrà la Google Maps:


<div id=”miamappa”></div>

e formattarlo opportunamente con un css, almeno per assegnare le dimensioni. (es. css inline style=”width:400px; height:300px;”).

Per il terzo passaggio torniamo nell’intestazione e inseriamo lo script necessario per la visualizzazione della mappa e la sua centratura:


<script type=”text/javascript”>
 var map;

function inizializza() {
 var milano = new google.maps.LatLng(45.463681, 9.188171);
 var mapOptions = {
 zoom: 12,
 center: milano,
 mapTypeId: google.maps.MapTypeId.TERRAIN
 };
 map =  new google.maps.Map(document.getElementById(“miamappa”), mapOptions);
 }
 </script>

La prima riga della funzione inizializza stabilisce le coordinate del punto al centro della mappa. che verrà usata nella variabile mapOptions. Per quanto riguarda gli altri due parametri zoom stabilisce il livello di detaglio della mappa e mapTypeId la tipologia della stessa.

Infine lanciamo la funzione inizializza al caricamento della pagina: <body onload=inizializza();>

Vedi l’esempio completo (visualizza codice sorgente per copiare)