La geolocalizzazione è un aspetto cruciale dello sviluppo mobile. Fortunatamente, trovare la posizione degli utenti su Windows Phone 8 è facile! Questo tutorial ti mostrerà come è fatto dimostrando il Geolocator
classe.
Windows Phone SDK è una piattaforma di sviluppo molto potente che consente agli sviluppatori di creare grandi applicazioni con il framework Silverlight. Il recente aggiornamento dell'SDK alla versione 8.0 (Windows Phone 8) comporta una serie di modifiche che semplificano l'esecuzione di alcune attività generiche. Una delle aree che ha visto un miglioramento in Windows Phone 8 è l'API Location. Nelle versioni precedenti di Windows Phone SDK, ottenere la posizione corrente di un utente era un po 'disordinato, ma la tecnica corrente per farlo era stata lucidata e resa un po' più diretta.
La nuova tecnica utilizza la chiamata al metodo ASYNC di Microsoft, che migliora le prestazioni delle applicazioni mentre accede alla posizione di un utente. Entriamo e diamo un'occhiata a questo nuovo modo di accedere alla posizione corrente su Windows Phone 8.
Per tentare questo tutorial, supporrò che tu abbia una conoscenza di base della piattaforma Windows Phone. Mi piacerebbe anche credere che tu abbia una conoscenza di base di XAML e C # in quanto questi sono il linguaggio con cui scriveremo la nostra applicazione. Sarà inoltre necessario disporre di Visual Studio 2012 o versione successiva con l'SDK di Windows Phone 8 e un emulatore di Windows Phone funzionante installato sul computer locale. In alternativa, puoi usare un vero dispositivo Windows Phone al posto dell'emulatore.
Apri Visual Studio e crea un nuovo progetto Windows Phone con File -> Nuovo -> Progetto
.
Nel riquadro di sinistra della finestra del nuovo progetto, assicurati di selezionare l'opzione Windows Phone nella sotto categoria Visual C #. Scegli Windows Phone App nella finestra principale e assegna al progetto il nome che desideri e poi fai clic su OK al termine.
Ora che abbiamo creato la nostra applicazione, possiamo concentrarci sul nostro obiettivo principale: impostare la posizione corrente dell'utente e visualizzarla sullo schermo. In termini semplici, la nostra applicazione avrà solo 2 elementi visualizzati, un pulsante e un TextBlock. Il pulsante sarebbe quello che faremo clic per dire alla nostra app di afferrare la posizione corrente di un utente e TextBlock mostrerà le coordinate geografiche della nostra posizione corrente.
Andiamo avanti e creiamo la nostra semplice interfaccia utente. Utilizzare Visual Studio ToolBox per trascinare e rilasciare un pulsante e un TextBlock in qualsiasi punto dello schermo. A questo punto, la tua applicazione dovrebbe avere un TextBlock e un Button come parte della sua interfaccia utente.
Dovrebbe assomigliare a questo:
Ti consiglio vivamente di cambiare la proprietà del nome sia del tuo Button che di TextBlock per essere coerente con questo tutorial. Imposta il nome del pulsante da MyButton e di TextBlock come MyTextBlock dalla finestra del codice XAML.

A questo punto, abbiamo la nostra interfaccia utente pronta e possiamo andare avanti e iniziare a scrivere la logica per la nostra applicazione. Fare doppio clic sul pulsante dalla vista designer e Visual Studio dovrebbe portarti automaticamente alla vista codice con un metodo già creato.
private void MyButton_Click (mittente dell'oggetto, RoutedEventArgs e)
Questo metodo generato è un metodo delegato o di richiamata per l'evento click del nostro pulsante. Ciò significa che il codice all'interno di questo metodo verrà eseguito solo quando si fa clic sul nostro pulsante. Per allinearci con il nostro obiettivo, inseriamo il codice che ottiene la nostra posizione corrente all'interno di questo metodo poiché vogliamo che la nostra posizione corrente venga determinata ogni volta che viene fatto clic sul nostro pulsante. Per raggiungere questo obiettivo, utilizzeremo le classi GeoLocator e GeoPosition.
La classe GeoLocator aiuta a ottenere la nostra posizione corrente e fa tutta l'interazione con il GPS / rete e restituisce un oggetto GeoPosition. D'altra parte, la classe GeoPosition ci fornisce un modo per consumare i dati restituiti restituiti da GeoLocator. Fondamentalmente, pensa a GeoLocator come strumento di richiesta e all'oggetto GeoPosition come strumento di risposta. Queste classi offrono anche spazio per personalizzare le nostre richieste e risposte. Ad esempio, possiamo dire al GeoLocator quanto accurato (al metro più vicino) vogliamo che la nostra posizione attuale sia, e quanto velocemente vogliamo che la nostra attuale posizione venga interrogata.
Ho scritto un metodo che aiuta a ottenere la nostra posizione attuale e spiegherò in dettaglio un po 'più tardi. Per ora, aggiungi il seguente riferimento spazio dei nomi al tuo: Windows.Devices.Geolocation;
. Successivamente, copia lo snippet di codice qui sotto e incollalo in:
 spazio vuoto asincrono GetCurrentLocation ()  Geolocator locationFinder = nuovo Geolocator   DesiredAccuracyInMeters = 50,  DesiredAccuracy = PositionAccuracy.Default ; try Geoposition currentLocation = attendi locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), timeout: TimeSpan.FromSeconds (10)); String longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); String latitude = currentLocation.Coordinate.Latitude.ToString ("0.00");  MyTextBlock.Text = "Long:" + longitude + "Lat:" + latitude;   catch (UnauthorizedAccessException)   MessageBox.Show ("E l'eccezione si è verificata");  
Questo metodo fa tutto il lavoro per noi e va anche avanti per impostare la nostra proprietà text TextBlock per noi. Esaminiamo attentamente cosa sta facendo il metodo.
In primo luogo, creiamo un nuovo oggetto GeoLocator chiamato locationFinder
. Quindi, per prima cosa, diciamo quanto accurato in metri vogliamo che la nostra posizione sia e impostiamo quanto accurato vogliamo il risultato.
Geolocator locationFinder = new Geolocator  DesiredAccuracyInMeters = 50, DesiredAccuracy = PositionAccuracy.Default ;
Successivamente, istanziamo un oggetto GeoPosition chiamato posizione attuale
all'interno di un blocco try / catch in caso di eventuali eccezioni. Quindi lo assegniamo all'oggetto GeoPosition restituito che il nostro oggetto GeoLocator restituisce utilizzando GetGeoPostionAsync
metodo.
Geoposition currentLocation = attendi locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120),  timeout: TimeSpan.FromSeconds (10));  Stringa longitudine = currentLocation.Coordinate.Longitude.ToString ("0,00"); String latitude = currentLocation.Coordinate.Latitude.ToString ("0.00");
Infine, otteniamo la longitudine e la latitudine restituite e impostiamo il nostro TextBlock per visualizzare questi valori.
MyTextBlock.Text = "Lon:" + longitude + "Lat:" + latitudine;
È così semplice! Ci sono alcune altre cose da fare prima di testare la nostra applicazione. Per prima cosa, dobbiamo chiamare il nostro GetCurrentLocation
metodo all'interno del metodo delegato del nostro pulsante che è stato creato inizialmente per noi.
private void MyButton_Click (mittente dell'oggetto, RoutedEventArgs e) GetCurrentLocation ();
Ciò significa che ogni volta che clicchiamo sul nostro pulsante, il nostro GetCurrentLocation
Il metodo verrà eseguito e la nostra posizione corrente verrà recuperata per noi.
Infine, dobbiamo richiedere l'autorizzazione per utilizzare l'API di posizione su Windows Phone. Lo facciamo modificando il file manifest. In Esplora soluzioni, cercare una voce denominata Proprietà e attivarla per visualizzarne le sottovoci. Uno dei nomi di file secondari dovrebbe essere WMAppManifest.xml. Fai doppio clic su questo e vedrai una GUI con quattro schede, una di queste è intitolata Funzionalità. Seleziona quella scheda e dovresti vedere qualcosa di simile a questo:
Ora, controlla l'opzione ID_CAP_LOCATION
se deselezionato e salva il tuo progetto (CTRL + S). Fatto ciò, è possibile chiudere la finestra WMAppManifest.xml. Quello che abbiamo appena fatto è richiesto esplicitamente il permesso di consentire alla nostra app di utilizzare lo strumento GPS / posizione di Windows Phone. Fatto ciò, ora possiamo eseguire la nostra applicazione per la prima volta!
Se stai utilizzando un dispositivo fisico Windows Phone per i test, assicurati di aver attivato la funzione Location nelle impostazioni e di avere una connessione Internet valida su una rete WiFi o Mobile. Questo è molto importante e obbligatorio affinché la nostra applicazione funzioni. Se stai utilizzando un emulatore di Windows Phone, assicurati anche che la Location sia abilitata anche sull'Emulatore e che la connessione Internet sia funzionante.
Per avviare l'applicazione, cerca il pulsante verde di riproduzione nel menu di Visual Studio e seleziona l'emulatore o l'opzione Dispositivo se stai utilizzando un telefono. Assicurati che la configurazione della soluzione sul lato destro del pulsante sia impostata su Debug.
Fare clic sul pulsante verde per avviare l'applicazione. L'app dovrebbe lanciare e visualizzare la pagina su cui abbiamo disegnato la nostra interfaccia utente. Ora, fai clic sul pulsante per comandare all'app di ottenere le coordinate della posizione corrente e dovresti visualizzare un risultato simile al seguente:
Ormai avrete notato che abbiamo raggiunto con successo ciò che intendiamo raggiungere e la nostra posizione attuale ci viene mostrata. Puoi vedere quanto è stato facile ottenere questo risultato con una programmazione così minimale! Questa è un'operazione molto semplice ma importante nello sviluppo di Windows Phone Sentiti libero di giocare con le impostazioni personalizzabili delle classi GeoLocator e GeoPosition. Grazie per aver letto!