Blog Stats

  • Blogs - 41
  • Posts - 4060
  • Articles - 185
  • Comments - 22539
  • Trackbacks - 934

Bloggers (posts, last update)

Powered By:
Powered by Subtext

Latest Posts

La classe ReverseGeocodeQuery in Windows Phone 8.

 

Introduzione

Come spiegato nel precedente articolo, la geolocalizzazione é una delle funzionalità più utilizzate in ambito mobile e non solo, con essa siamo in grado di recuperare la posizione e informazioni sul luogo in cui ci troviamo, e mediante un'applicazione adibita avere altre informazioni, come ristoranti, hotel, punti d'interesse e molti altri scenari. Continuiamo in questo secondo articolo, il nostro percorso sui servizi di geolocalizzazione, vedremo come convertire le coordinate di latitudine, è longitudine in un indirizzo, così da visualizzare in un'applicazione tutte le informazioni sul luogo in cui ci troviamo, e nei prossimi articoli utilizzarle all'interno di un controllo Nokia Maps di Nokia, e anche un esempio su come rilevare le condizioni meteo.

 

La classe ReverseGeocodeQuery

Oltre la classe Geolocator, che troviamo nel Namespace  Windows.Devices.Geolocation, abbiamo un'altra importante classe che il Windows Runtime mette a disposizione per noi sviluppatori, la classe ReverseGeocodeQuery. Se pensiamo bene, quando sviluppiamo un'applicazione che fa uso delle mappe soprattutto, o vogliamo dare all'utente più informazioni sul luogo, come nome del paese, indirizzo e altro, ecco che la classe ReverseGeocodeQuery e ciò che ci serve. Analizziamo i principali metodi, proprietà e l'unico evento disponibile:

Le proprietà

·         GeoCoordinate

·         IsBusy

Il metodo più utilizzato:

·         QueryAsync ()

L'unico evento:

·         QueryCompleted

 

  

Le proprietà.

GeoCoordinate, qui dobbiamo inserire i valori di latitudine è longitudine per far si che siano poi convertiti in un indirizzo dalla classe ReverseGeocodeQuery, il tutto mediante un oggetto di tipo GeoCoordinate, vedremo poi nell'applicazione di esempio come fare.

IsBusy, proprietà di sola lettura, utile se abbiamo la necessità di sapere se la query e in fase di elaborazione per il recupero dei dati.

 

I metodi.

Il metodo QueryAsync (), quando è richiamato, esegue la query di ricerca in base alle coordinate di latitudine e longitudine, da notare che questo metodo seppur chiamato con Async finale, è si eseguito in maniera asincrona, ma essendo di tipo void, non si basa sul pattern Async/Await. Per intenderci, un metodo void quando è eseguito, non restituisce alcun risultato, come invece avviene per esempio, se richiamiamo un metodo di tipo Int.

 

Gli eventi.

L'unico evento QueryCompleted, eseguito quando la query e terminata, restituisce tutti i dati concernenti l'indirizzo, in un oggetto di tipo IList<MapLocation>. Si tratta esattamente di tutti i risultati che sono stati trovati dalla query racchiusi in una collection, perché possono anche essere più di uno. Per trovare le informazioni dobbiamo fare riferimento alla proprietà Result. Oltre questa abbiamo:

·         Cancelled: di tipo bool, utile per capire quando e se un'azione asincrona è stata annullata.

·         Error: anch'essa di tipo bool, utile qualora occorra un errore durante l'esecuzione della query, infatti, da questa proprietà, si otterrà un oggetto di tipo Exception AsyncCompletedEventArgs con l'errore verificatosi.

·         Result: lo abbiamo descritto prima, in altre parole i risultati della query in una collection di tipo IList<MapLocation>.

·         UserState: proprietà di tipo Object, ci restituisce l'identificatore univoco per l'attività asincrona corrente.

 

Convertire le coordinate latitudine è longitudine in un indirizzo.

Fino ad ora, è stata fatta una breve panoramica sulla classe ReverseGeocodeQuery, in altre parole una breve analisi dei metodi, proprietà più utilizzata, insieme all'unico evento QueryCompleted. Per un maggiore approfondimento sull'argomento lascio il link alla documentazione ufficiale di Msdn Library.

Continuando dall'esempio che abbiamo creato nel precedente articolo, per chi non lo avesse ancora scaricato, il download è disponibile a questo link. L'applicazione di prova fino all'articolo precedente era così strutturata.

clip_image002[6]

Abbiamo quattro controlli TextBlock, che servivano per visualizzare i valori di latitudine è longitudine mediante il tap sul controllo Button denominato Find data. Apriamo il progetto con Visual Studio 2013, ricordo che questo esempio è stato creato con la versione Professional. In esplora soluzioni, doppio click con il mouse sul file MainPage.xaml. Nell'interfaccia grafica, andiamo a cancellare tutti i controlli dal grid principale denominato ContentPanel, ed inseriremo il codice seguente.

        <!--ContentPanel - inserire ulteriore contenuto qui-->

             <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

                    <Grid.RowDefinitions>

                           <RowDefinition Height="*"/>

                           <RowDefinition Height="Auto"/>               

                    </Grid.RowDefinitions>

           

                    <StackPanel Orientation="Horizontal">

                           <StackPanel>

                                  <TextBlock Text="City   "/>

                                  <TextBlock Text="Country    "/>

                                  <TextBlock Text="CountryCode    "/>

                                  <TextBlock Text="HouseNumber    "/>

                                  <TextBlock Text="PostalCode "/>

                                  <TextBlock Text="State  "/>

                                  <TextBlock Text="Street "/>

                           </StackPanel>

                           

                           <StackPanel>

                    <TextBlock x:Name="tbkCity"/>

                    <TextBlock x:Name="tbkCountry"/>

                                  <TextBlock x:Name="tbkCountryCode"/>

                                  <TextBlock x:Name="tbkHouseNumber"/>

                    <TextBlock x:Name="tbkPostalCode"/>

                    <TextBlock x:Name="tbkState"/>

                                  <TextBlock x:Name="tbkStreet"/>

                           </StackPanel>

                    </StackPanel>

           

                    <Button Grid.Row="1" x:Name="btnFindCoordinate" Content="Find data" Tap="btnFindCoordinate_Tap"/>                       

             </Grid>

 

Sono stati aggiunti altri controlli TextBlock, per visualizzare alcune delle proprietà più importanti, come Città, Paese, Numero civico e altri dati che vedremo in seguito. Dopo aver inserito il codice xaml, la nostra interfaccia grafica assumerà quest'aspetto.

clip_image004[6]

Dall'immagine precedente, è possibile notare che abbiamo aggiunto rispetto a prima dei controlli TextBlock in grado di visualizzare tutti i dati necessari sul luogo in cui ci troviamo. Passiamo adesso alla parte di code behind, la prima cosa da fare e aggiungere il namespace riportato qui di seguito, necessario se vogliamo utilizzare la classe ReverseGeocodeQuery.

using Microsoft.Phone.Maps.Services;

Modifichiamo il codice riguardante l'evento tap del pulsante, richiamando un metodo asincrono denominato GetAddress().

        private void btnFindCoordinate_Tap(object sender, System.Windows.Input.GestureEventArgs e)

        {

           GetAddress();

        }

Adesso il codice necessario per la ricerca delle informazioni su luogo dove ci troviamo.

        public async void GetAddress()

        {

            var latitude = 0d;

            var longitude = 0d;

            var locator = new Geolocator();

            var reversegeocodequery = new ReverseGeocodeQuery();

 

            if (!locator.LocationStatus.Equals(PositionStatus.Disabled))

            {

                var position = await locator.GetGeopositionAsync();

                latitude = position.Coordinate.Latitude;

                longitude = position.Coordinate.Longitude;

 

 

                reversegeocodequery.GeoCoordinate = new GeoCoordinate(latitude, longitude);

                reversegeocodequery.QueryAsync();

 

                reversegeocodequery.QueryCompleted += (sender, args) =>

                {

                    if (!args.Result.Equals(null))

                    {

                        var result = args.Result.FirstOrDefault();

 

                         tbkCity.Text = result.Information.Address.City;

                         tbkCountry.Text =  result.Information.Address.Country;

                         tbkCountryCode.Text =  result.Information.Address.CountryCode;

                         tbkHouseNumber.Text =  result.Information.Address.HouseNumber;

                         tbkPostalCode.Text =  result.Information.Address.PostalCode;

                         tbkState.Text =  result.Information.Address.State;

                         tbkStreet.Text =  result.Information.Address.Street;

                    }

                };

 

            }

 

            else

            {

                MessageBox.Show("Service Geolocation not enabled!", AppResources.ApplicationTitle, MessageBoxButton.OK);

                return;

            }

        }

Andiamo ad analizzarne il contenuto. Per quanto riguarda la classe Geolocator, rispetto all'esempio dell'articolo precedente non cambia nulla, resta tutto invariato. La novità parte da questa riga di codice, qui dichiariamo un nuovo oggetto di tipo ReverseGeocodeQuery.

var reversegeocodequery = new ReverseGeocodeQuery();

La restante parte di codice.

                reversegeocodequery.GeoCoordinate = new GeoCoordinate(latitude, longitude);

                reversegeocodequery.QueryAsync();

 

                reversegeocodequery.QueryCompleted += (sender, args) =>

                {

                    if (!args.Result.Equals(null))

                    {

                        var result = args.Result.FirstOrDefault();

 

                         tbkCity.Text = result.Information.Address.City;

                         tbkCountry.Text =  result.Information.Address.Country;

                         tbkCountryCode.Text =  result.Information.Address.CountryCode;

                         tbkHouseNumber.Text =  result.Information.Address.HouseNumber;

                         tbkPostalCode.Text =  result.Information.Address.PostalCode;

                         tbkState.Text =  result.Information.Address.State;

                         tbkStreet.Text =  result.Information.Address.Street;

                    }

                };

Valorizza la proprietà Geocoordinate, passando come argomenti la latitudine è longitudine che la classe Geolocator ha rilevato, in seguito e richiamato il metodo QueryAsync(). Per ultimo ci sottoscriviamo all'evento QueryCompleted, eseguito quando la query e stata eseguita e completata, restituendoci tutti i dati in una collection di tipo I<MapLocation>. I dati sono contenuti nella proprietà Address, avremo la proprietà City, Country, CountryCode, HouseNumber, PostalCode, State e Street, ovvero quelle di maggiore utilizzo, anche se in realtà non sono le sole, ma ne abbiamo altre da poter utilizzare, mediante l'intellisense, Visual Studio 2013 ci mostrerà tutti valori disponibili. Adesso che abbiamo sia il codice dell'interfaccia grafica e code behind, è giunto il momento di eseguire l'applicazione, ma prima di avviare il debug bisogna attivare la capability necessaria. In esplora soluzioni espandiamo la cartella Properties e doppio click con il mouse sul file WMAppManifest.xaml, andiamo alla sezione funzionalità e attiviamo la Capability ID_CAP_MAP, come mostrato in figura.

clip_image006[6]

Terminata quest'attività, possiamo finalmente eseguire il debug. Tasto F5, avviamo l'applicazione, che inizialmente sarà come mostrato in figura.

clip_image007[6]

Facendo un tap sul pulsante Find data, e tutto va a buon fine, avremo tutti i dati relativi all'indirizzo sulla base delle coordinate di latitudine è longitudine che la classe Geolocator ha rilevato.

clip_image009[6] 

Conclusione.

In questo secondo articolo, abbiamo visto come ottenere mediante latitudine e longitudine altri, dati sul luogo in cui ci troviamo,il tutto grazie alla classe ReverseGeocedeQuery, nel prossimo articolo, daremo uno sguardo alla classe GeocodeQuery, che ha il medesimo approccio, con la differenza che trasforma i dati di un indirizzo in coordinate latitudine è longitudine.

posted @ 30/08/2014 17:58 by Carmelo La Monica

VB.NET su Intel Galileo Windows IoT

Nella gionata di ieri mi sono dedicato a ‘giocare’ con la mia scheda Intel Galileo ora che la Developer Preview di Windows for IoT e stata resa pubblica ed installabile su qualsiasi scheda Intel Galileo Gen1 (ATTENZIONE per ora, le schede Intel Galileo gen2 NON sono supportate da Windows for IoT)

Benchè nelle FAQ di Windows for IoT si legga

Q: Will you support C#/WinRT/.NET/Node/JS… ?
A: For this first preview release, we’re focusing on C++ and Arduino compatibility. In future iterations, our intent is to support the Universal App model announced at Build.

Ho voluto fare una prova scrivendo un complesso :) programma VB.NET

   1: Module Module1
   2:     Sub Main()
   3:         Console.WriteLine("CIAO")
   4:     End Sub
   5: End Module

e magicamente … Surprised smile

 

L’applicazione è di tipo console perchè, ricordo, che Windows for IoT dovendo essere eseguito su dispositivi e non su ‘PC’ non prevede l’interfaccia grafica di Windows (UI).

Visto questo successo mi sono spinto più avanti con la complessità del programma

   1: Module Module1
   2:     Sub Main()
   3:         Console.Write("Ciao, come ti chiami?")
   4:         Dim Nome = Console.ReadLine()
   5:  
   6:         Console.WriteLine("Ciao " & Nome & " dal tuo programma VB.NET che gira su Intel Galileo e Windows for IoT")
   7:         Console.WriteLine()
   8:         Console.Write("Sono le " & DateTime.Now.ToLongTimeString)
   9:         Console.WriteLine("  di " & DateTime.Now.ToLongDateString)
  10:  
  11:         Console.WriteLine()
  12:         Console.WriteLine()
  13:         Console.WriteLine("ora il programma termina!")
  14:  
  15:         Dim i As Integer
  16:         For i = -10 To 0
  17:             Console.WriteLine(i.ToString)
  18:         Next i
  19:         Console.WriteLine("bye bye da VB T&T www.visual-basic.it")
  20:     End Sub
  21: End Module

 

ed anche con questo codice un successo! Smile with tongue out

peccato che poi è bastata aggiungere questa riga

   1: Console.WriteLine("Proviamo con Operatore VAL " & Val("123"))

 

per avere un crash della applicazione Crying face

Quindi mi pare di capire che ‘qualcosa’ del .NET Framework dietro le quinte ci sia speriamo si espanda e sia documentato quanto prima possibile.

Infine, se volete approfondire tecnicamente Windows for IoT, vi consiglio la lettura di questo post del mio caro amico e super esperto del mondo ‘micro’ Valter Minute

BuonDivertimento con Windows for IoT!

Renato

PS Proprio mentre sto pubblicando mi segnalano questo post di Pete Brown che tramite C# arriva alle mie stesse conclusioni!

posted @ 22/08/2014 14:55 by Renato Marzaro

Ebook: "Localization in .NET Succinctly"

Vi segnalo l'uscita di un nuovo ebook gratuito della serie "Succinctly" della Syncfusion, dal titolo "Localization in .NET Succinctly".

Ve lo segnalo con maggior piacere perché ne sono stato il revisore tecnico ed è stata per me la seconda esperienza come technical editor dopo aver contribuito a LightSwitch Mobile Business Apps Succintly.

Il libro è interessante perché svela molti trucchi a volte sottovalutati e fa importanti distinzioni tra il mondo desktop e quello Web.

Consigliato

Alessandro

posted @ 20/08/2014 01:17 by Alessandro Del Sole

Telerik UI for Windows Universal beta

La Telerik, nota azienda produttrice di controlli utente per varie piattaforme applicative (tra i migliori in assoluto secondo me), ha rilasciato una prima beta dei suoi nuovi controlli per le Universal App. La beta è disponibile per tutti ed è richiesta la sola registrazione al sito.

Il link per il download è questo e direi che è un'ottima prova da fare

Alessandro

posted @ 04/08/2014 00:19 by Alessandro Del Sole

Visual Studio 2013 Update 3 disponibile

Continuando sulla scia e filosofia dei frequenti aggiornamenti, oggi è stato rilasciato in RTM l'Update 3 per Visual Studio 2013. Ci sono tanti interessanti miglioramenti; tra i miei preferiti, il tool di diagnostica della memoria ora disponibile anche per WPF, precedentemente disponibile solo per Windows Store app.

L'elenco completo delle novità è nel post di annuncio di Brian Harry.

Alessandro

posted @ 04/08/2014 00:15 by Alessandro Del Sole

I servizi di geolocalizzazione in Windows Phone 8.

 

Introduzione

 

La geolocalizzazione é una delle funzionalità più utilizzate in ambito mobile e non solo, con essa siamo in grado di recuperare la posizione e informazioni sul luogo in cui ci troviamo, e mediante un'applicazione adibita avere altre informazioni, come ristoranti, hotel, punti d'interesse e molti altri scenari. In Windows Phone 8 il funzionamento della geolocalizzazione si basa principalmente su tre importanti strumenti:

  • GPS
  • 3G
  • Wi-Fi

Il Gps e sicuramente lo strumento con maggiore precisione, ma con lo svantaggio di richiedere un elevato consumo di batteria, e di essere all'aperto per una maggiore precisione dei dati. La rete 3G, basata su connessione a banda larga, sfrutta la connessione UMTS, è permette la navigazione su Internet, ha sì il vantaggio di consumare meno batteria rispetto alla connessione Gps, ma al contrario e molto meno precisa. L'ultima, Wi-Fi, si basa sulla connessione router al quale il dispositivo è collegato, con un medio consumo di batteria e un buon livello di precisione.Dopo questa breve panoramica sugli strumenti su cui è basata la Geolocalizzazione, vediamo in che modo utilizzarla in un applicazione Windows Phone 8.

La classe Geolocator

 

Il Windows Runtime mette a disposizione per noi sviluppatori la classe Geolocator, che troviamo nel Namespace Windows.Devices.Geolocation. Questa classe dispone di diversi metodi, proprietà ed eventi, con la quale possiamo ottenere tutti i dati necessari sulla posizione.

Ha cinque proprietà:

  • DesiredAccuracy
  • DesiredAccuracyInMeters
  • LocationStatus
  • MovementThreshold
  • ReportInterval

Il metodo più utilizzato:

  • GetPositionAsync ()

E infine i due eventi:

  • PositionChanged
  • StatusChanged

Le proprietà.

La proprietà DesiredAccuracy, permette di impostare il livello di precisione per rilevare la posizione. Questa proprietà può assumere uno dei seguenti valori dell'enumeratore PositionAccuracy:

  • Default, la ricezione dei dati avviene in modo da garantire un normale consumo di batteria, e aggiornamento della posizione.
  • Hight, se vogliamo ricevere i dati sulla posizione in maniera più precisa, teniamo conto però, che impostando questo valore, ci sarà maggiore consumo di batteria, per cui va impostato solo se l'applicazione che vogliamo realizzare richiede una maggiore precisione dei dati.

DesiredAccuracyInMeters, ottiene o imposta la precisione desiderata in metri per i dati restituiti dal servizio di Geolocalizzazione.

LocationStatus, determina invece lo stato del segnale Gps, può assumere uno dei seguenti valori dell'enumeratore PositionStatus:

  • Disabled, servizio di geolocalizzazione disabilitato nel telefono, ricordo che i servizi di geolocalizzazione possono anche essere disabilitati dall'utente.
  • Initializing, servizio di geolocalizzazione in fase d'inizializzazione, per cui i dati di posizione non possono ancora essere disponibili.
  • NotAvailable, servizi di gelolocalizzazione non disponibili, ma poiché Windows Phone dispone sempre del servizio Gps, anche a regimi minimi, questa proprietà non potrà mai assumere tale valore.
  • NoData, i servizi di gelolocalizzazione sono attivi, ma al momento i dati non possono essere recuperati, questo stato capita per esempio quando vi è poca o nessuna connettività.
  • NotInitialized, i servizi di gelolocalizzazione sono attivi, ma al momento non vi è ancora stata nessuna richiesta sul recupero dei dati, non è ancora stato eseguito il metodo GetPositionAsync ().
  • Ready, i servizi di gelolocalizzazione sono attivi e pronti per il recupero dei dati sulla posizione.

MovementThreshold, rappresenta il valore di posizione in metri che deve essere percorsa sulla base della posizione precedente.

ReportInterval, rappresenta il tempo minimo in millisecondi, che deve trascorrere tra una lettura e l'altra della posizione.

I metodi.

Il metodo GetPositionAsync (), restituisce un oggetto di tipo Geoposition, dove troviamo tutte le informazioni sulla posizione, esempio la proprietà Coordinate, che contiene i valori di latitudine e longitudine, questi sono valori principalmente utilizzati, espone anche una proprietà CivicAddress, che a sua volta restituisce altri valori, come Città, Paese, Codice postale, Provincia.

Gli eventi.

L'evento StatusChanged, è eseguito ogni volta che lo stato del segnale Gps cambia, utile quindi per gestire il download delle informazioni sulla posizione, per avvertire l'utente in caso di scarsa o connettività assente. Questo evento restituisce le informazioni sulla connessione mediante un valore chiamato Status, di tipo Position Status, i valori restituiti sono identici a quanto descritto per la proprietà LocationStatus.

L'evento PositionChanged, è eseguito ogni volta che è rilevata una nuova posizione, il tutto avviene mediante la valorizzazione delle proprietà MovementThreshold e ReportInterval descritte prima. Le informazioni possono essere trovate dalla proprietà Coordinate di tipo Position restituito dall'evento. Abbiamo anche la proprietà CivicAddress, però non essendo implementata, i dati potrebbero non essere precisi e soprattutto non esatti.

 

Ottenere la posizione in Windows Phone 8

 

Fino ad ora è stata fatta una breve panoramica sui servizi di geolocalizzazione, per un maggiore approfondimento sull'argomento lascio il link alla documentazione ufficiale di Msdn Library.

Vediamo ora come utilizzare i servizi per recuperare i valori di latitudine è longitudine. Avviamo Visual Studio 2013 (in questo esempio è utilizzata la versione Professional), e creiamo un nuovo progetto Applicazione vuota (Silverlight per Windows Phone) come in figura e lo chiamiamo GeoPositionSample.

image

Confermiamo con pulsante ok, nella schermata successiva lasciamo selezionata un'applicazione Windows Phone 8.0.

image

Confermiamo con ok, e attendiamo il completamento della Solution. Ecco come si presenterà il progetto iniziale.

image

Abbiamo a sinistra dell'immagine, l'interfaccia grafica, dove man mano che inseriamo controlli o dalla casella degli strumenti, o da codice xaml, ci mostrerà in anteprima come sarà la nostra applicazione. Sulla destra invece il codice xaml dell'interfaccia grafica. Trattandosi di un'applicazione vuota non abbiamo alcun controllo eccetto la parte, dove sono visualizzati, "applicazione" è "nome pagina".

Per visualizzare i dati di latitudine e longitudine, inseriremo nella nostra interfaccia grafica quattro controlli TextBlock e un Button. Per prima cosa definiamo da codice xaml quattro righe e due colonne all'interno del controllo grid denominato ContentPanel, dove andremo a inserire tutto il contenuto della nostra interfaccia.

image

Noterete che è stato creato anche l'evento Tap per il controllo Button, e lì che inseriremo il codice necessario affinché la nostra applicazione possa interagire con i servizi di geolocalizzazione. Modifichiamo anche il valore della proprietà Text dei controlli TextBlock, che troviamo all'interno del controllo StackPanel denominato TitlePanel, come mostrato in figura.

image

Dopo aver scritto il codice riportato sopra, la nostra schermata assumerà quest'aspetto.

image

Creato i controlli necessari, vediamo nella parte di codice cosa serve per recuperare tali valori. Modifichiamo il file di codice, procedere con tasto F7, o in esplora soluzioni andando ad espandere il file MainPage.xaml, fino a trovare il file MainPage.xaml.cs nel nostro caso, o .xaml.vb se sviluppiamo in VbNet. Click con il mouse e saremo condotti all'interno del file di codice. In precedenza abbiamo detto che Windows Runtime ci mette a disposizione la classe Geolocator, per cui la prima cosa da fare e aggiungere nel file di codice il Namespace.

using Windows.Devices.Geolocation;

Cerchiamo l'evento Tap, e al suo interno scriviamo il codice seguente.

image

Come funziona? Dichiariamo una variabile denominata locator di tipo Geolocator, é buona norma controllare lo stato dei servizi per verificare che siano attivi, diversamente avremo un'eccezione nel momento in cui tentiamo di rilevare la posizione. Questo si esegue andando a verificare il valore della proprietà LocationStatus che non sia "Disabled".

Se i servizi sono abilitati, sarà eseguito il metodo GetPositionAsync() , che restituisce tutti i dati della posizione, da notare che questo metodo é asincrono, ciò significa che l'applicazione non resterà bloccata fino a quando non saranno scaricati i dati, ma l'utente può continuare ad interagire liberamente con i controlli dell' interfaccia, premesso che in questo articolo non si parlerà di programmazione asincrona, per una maggiore e più dettagliata informazione sul funzionamento, lascio il link della documentazione Msdn.

Al momento in cui il metodo GetPositionAsync () è eseguito, andiamo a valorizzare i controlli TextBlock tbkLatitudeValue e tbkLongitudeValue con il valore delle proprietà Latitude e Longitude di tipo GeoCoordinate, convertite poi in stringa mediante il metodo ToString (), questo perché è un valore di tipo double. Il codice che avremo all'interno dell'evento Tap del Button é così definito

image

Prima di procedere con il debug dell'applicazione, é e necessario attivare la capability ID_CAP_LOCATION, diversamente l'applicazione non funzionerà, in esplora soluzioni espandiamo la directory Properties, e click sul file WMAppManifest.xml come mostrato in figura.

image

Aperto il file andiamo alla tab Funzionalità, e selezioniamo la capability.

image

Terminata anche quest'attività, possiamo procedere con il debug dell'applicazione. Cosa importante, se usate l'emulatore, bisogna impostare la proprietà DesiredAccuracy su Hight, questo per rilevare i cambiamenti di posizione. Se tutto e a posto, la nostra schermata iniziale avrà quest'aspetto.

image

Facciamo Tap sul Button, ed ecco che abbiamo i dati di latitudine é longitudine come previsto.

image

 

Conclusione.

 

In questo primo articolo abbiamo visto come ottenere la posizione mediante latitudine e longitudine, nei prossimi articoli, vedremo come ricavare altre informazioni che la classe Geolocator espone per poi sfruttarle nelle nostre applicazioni, e come, tramite latitudine e longitudine, avere altre informazioni sul luogo con la classe ReverseGeocodeQuery, i modi di funzionare sono tanti, le esploreremo una a una.

posted @ 03/08/2014 02:10 by Carmelo La Monica

Il mio libro "Programmare con WPF 4.5": ma quando esce?

L'1 settembre Riposatevi quindi durante le ferie, in modo da essere poi pronti per la lettura!

Alessandro

posted @ 30/07/2014 14:54 by Alessandro Del Sole

Universal App anche con VB

Vi segnalo questo articolo "VB Universal Windows App" series che speiga come realizzare Universal App con il Ns VB.NET.

Vi ricordo che Universal App significa scrivere applicazioni per Windows, Windows Phone e, in futuro, XBox riutilizzando gran parte del codice scritto … non male! :)

Microsoft svela le Universal Apps: una sola app per Windows, Windows Phone e Xbox

Renato

posted @ 12/07/2014 02:20 by Renato Marzaro

Disponibile Visual Studio "14" CTP 2

E' stata appena resa disponibile per il download la CTP 2 di Visual Studio "14", l'attuale nome in codice della prossima edizione di Microsoft Visual Studio, secondo la nota formula della Community Technology Preview.

Come per la prima CTP, potete anche scaricare una virtual machine basata su Windows Azure; ad ogni modo, è bene installare quest'anteprima su un ambiente di test.

L'elenco delle nuove funzionalità è disponibile in questo post di John Montgomery, che include anche i link per il download, e nell'apposita pagina della Knowledge Base.

Alessandro

posted @ 08/07/2014 22:01 by Alessandro Del Sole

Microsoft MVP: rinnovato per un altro anno

Da qualche anno ormai, dal 2008 per la precisione, il 1° luglio è sempre una giornata particolare perché per il sottoscritto ricorre la rinomina a Microsoft MVP per Visual Basic. Sono stato confermato anche per i prossimi 12 mesi, per la 7ima volta di fila e ovviamente continua ad essere un grande onore, una grande soddisfazione e una grande emozione.

Per vari problemi personali so di aver fatto meno attività rispetto agli anni precedenti, ma conto di tornare in pista al mio solito il prima possibile.

Per quanto sia consapevole di essere ripetitivo, in questa circostanza sono uso ribadire che il benefit più grande derivato dal programma MVP è l'aver conosciuto tante persone ed aver stretto tante amicizie, indipendentemente dall'aspetto tecnico. Certo, ovviamente i benefit tecnici sono di assoluto rilievo, la possibilità di rimanere aggiornato in modo adeguato è di prima qualità e su questo non ci piove, ma sono sempre le persone che fanno il mondo.

Mi congratulo con i nuovi MVP e con i rinnovati, che conto di rivedere quanto meno al prossimo MVP Summit a Redmond e ringrazio, in ordine sparso, la divsione DPE di Microsoft Italia, Cristina Gonzalez Herrero, Marjorie di Clemente e Alessandro Teglia, nonché tutti gli appartenenti alla community Visual Basic Tips & Tricks, la cui esistenza è il fondamento, almeno per me, di questo importante award.

Alessandro

posted @ 02/07/2014 20:51 by Alessandro Del Sole