Mappe nel tuo sito con Virtual Earth

3 pagine in totale: <<Indietro 1 2 [3]

Calcolare la strada tra più destinazioni

Così come è utile poter trovare indirizzi o punti di interesse in una mappa, è altrettanto utile poter calcolare la strada tra due o più indirizzi. Un sito di informazioni turistiche può trarre un grande beneficio da una funzionalità del genere. In questo caso, l'API da utilizzare è GetDirections.

Questo metodo è molto semplice in quanto accetta solo due parametri: un array con la lista di punti da raggiungere ed un oggetto di tipo VERouteOptions che specifica alcune opzioni. L'array può contenere sia stringhe che oggetti VELatLong. Il secondo parametro permette di decidere opzioni quali:

  • DistanceUnit: enum che rappresenta l'unita di misura delle distanze (Kilometer, Miles)
  • DrawRoute: specifica se disegnare la strada sulla mappa
  • RouteColor: specifica il colore della linea sulla mappa
  • RouteMode: enum di tipo VERouteMode che specifica se il percorso va calcolato in auto o a piedi (Walking, Driving)
  • RouteOptimize: enum che specifica se ottimizzare i tempi o la distanza nel calcolo (MinimizeTime, MinimizeDistance)
  • SetBestMapView: specifica se spostare la mappa nella zona dove viene visualizzata la strada
  • RouteCallback: specifica un callback da invocare quando il calcolo è terminato

Supponendo di voler calcolare la strada in auto tra Piazza di spagna e Piazza San Pietro a Roma, il primo passo è creare due textbox per impostare gli indirizzi di partenza e destinazione ed un bottone per lanciare il calcolo.

<div id="map" style="position:relative;width:800px; height:600px;"></div>
<input id="txtFrom" type="text" name="txtFrom"/>
<input id="txtTo" type="text" name="txtTo"/>
<input id="find" type="button" value="Find" name="GetRoute"
  onclick="GetRoute();"/>

Successivamente si utilizza il metodo GetRoute per calcolare la strada.

function GetRoute(){
  try{
    var options = new VERouteOptions();
    options.DrawRoute = true;
    options.SetBestMapView = true;
    options.DistanceUnit = VERouteDistanceUnit.Kilometer;
    map.GetDirections([document.getElementById('txtFrom').value,
      document.getElementById('txtTo').value], options);
  }
  catch(e)
  {
    alert(e.message);
  }
}

A questo punto, inserendo nel primo textbox la stringa "piazza di spagna, Roma RM" e nella seconda "piazza San Pietro, Roma RM, italia" si ottiene il seguente risultato.

Oltre al disegno sulla mappa, si possono ottenere le informazioni sulla rotta anche in formato testuale sfruttando il callback di ritorno. La prima cosa da fare è impostare il callback:

options.RouteCallback = RouteCallback;

La seconda è creare il metodo che gestisce i risultati:

function RouteCallback(route)
{
  …
}

Il parametro di input "route" è un oggetto di tipo VERoute contenente tutte le indicazioni in dettaglio.

Disegnare punti sulla mappa

Un'altra caratteristica che può tornare comoda è la creazione di punti sulla mappa. Questa funzione è abbastanza semplice da implementare grazie al metodo addShape dell'oggetto VEMap. Questo metodo accetta in input un oggetto di tipo VEShape che contiene i dati del punto da disegnare.

var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(41.90651636958651, 12.48158587325062));
shape.SetTitle('My pushpin');
shape.SetDescription('This is a shape');
map.AddShape(shape);

Questo codice è abbastanza semplice; prima viene creato l'oggetto VEShape con le coordinate, e poi ne vengono impostati titolo e descrizione che vengono mostrati quando si passa con il mouse sopra il punto.

Con Virtual Earth, si possono disegnare anche linee e poligoni sulla mappa. L'API e l'oggetto da utilizzare sono sempre gli stessi. La differenza sta nel fatto che il primo parametro del costruttore di VEShape accetta VEShapeType.Polyline in caso di linea e VEShapeType.Polygon in caso di poligono. Inoltre, il secondo parametro non accetta un solo punto, ma, ovviamente, un array di punti.

Conclusioni

Virtual Earth è un prodotto stabile e completo che non ha nulla da invidiare ai suoi concorrenti. Anzi, la possibilità della Bird's Eye View lo rende un prodotto da cui gli altri devono attingere. D'altro canto, però, il sistema di ricerca degli indirizzi è ancora imperfetto e quindi spesso si è costretti ad inserire indirizzi per intero per trovare la giusta occorrenza. Inoltre, c'è anche da dire che le API non sono ancora omogenee e quindi sono passibili di alcuni cambiamenti. Tuttavia, questi sono aspetti che Microsoft sta fortemente migliorando e quindi è lecito aspettarsi in tempi brevi delle migliorie che potrebbero rendere Virtual Earth la miglior scelta in assoluto quando si deve decidere il sistema di mappe utilizzare.

La serie completa su Windows Live Services

3 pagine in totale: <<Indietro 1 2 [3]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
MrOne scrive:
Mappe nel tuo sito con Virtual Earth

Complimenti per l'articolo volevo sapere se esiste con VE un metodo per ricavare latidudine e longitudine di una località ...Grazie
giovedì 10 luglio 2008
mauro.piccioli scrive:
Mappe nel tuo sito con Virtual Earth

Come si fa a calcolare la latitudine e longitudine di un punto ben presiso?
mercoledì 21 maggio 2008

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC