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
- Introduzione ai cloud based service con Windows Live Services di Daniele Bochicchio
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni di Daniele Bochicchio
- Mappe nel tuo sito con Virtual Earth di Stefano Mostarda
- Usare Search come un servizio nei tuoi siti e nei tuoi client di Alessandro Catorcini, Paolo Codato
3 pagine in totale: <<Indietro 1 2 [3]
Contenuti dell'articolo
- Galleria fotografica dinamica con ASP.NET AJAX
- Usare Search come un servizio nei tuoi siti e nei tuoi client
- Integrare Windows Live ID, Contacts e Presence API nelle tue applicazioni
- Introduzione ai cloud based service con Windows Live Services
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008
- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti
Come si fa a calcolare la latitudine e longitudine di un punto ben presiso?
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!

Complimenti per l'articolo volevo sapere se esiste con VE un metodo per ricavare latidudine e longitudine di una località ...Grazie
Continua »»» | Rispondi »»»