Geolocatie is een cruciaal aspect van mobiele ontwikkeling. Gelukkig is het gemakkelijk om de locatie van gebruikers op Windows Phone 8 te vinden! Deze tutorial zal je laten zien hoe het gedaan is door het te demonstreren geolocator
klasse.
De Windows Phone SDK is een zeer krachtig ontwikkelplatform waarmee ontwikkelaars geweldige applicaties kunnen maken met het Silverlight-framework. De recente upgrade van de SDK naar versie 8.0 (Windows Phone 8) brengt een groot aantal wijzigingen met zich mee waardoor sommige algemene taken eenvoudiger kunnen worden uitgevoerd. Een van de gebieden die een verbetering zag in Windows Phone 8 is de Location API. In eerdere versies van de Windows Phone SDK was het een beetje slordig om de huidige locatie van een gebruiker te krijgen, maar de huidige techniek om dit te doen is opgepoetst en een beetje directer gemaakt.
De nieuwe techniek maakt gebruik van de ASYNC-methodeaanroep van Microsoft, die de prestaties van applicaties verbetert terwijl ze toegang krijgt tot de locatie van een gebruiker. Laten we een duik nemen en deze nieuwe manier bekijken om toegang te krijgen tot de huidige locatie op Windows Phone 8.
Om deze tutorial te proberen, ga ik ervan uit dat je een basiskennis hebt van het Windows Phone-platform. Ik zou ook willen geloven dat je enige basiskennis hebt van XAML en C # omdat dit de taal is waarmee we onze applicatie gaan schrijven. U moet ook Visual Studio 2012 of hoger hebben met de Windows Phone 8 SDK en een werkende Windows Phone-emulator op uw lokale computer geïnstalleerd. U kunt ook een echt Windows Phone-apparaat gebruiken in plaats van de emulator.
Open Visual Studio en maak een nieuw Windows Phone-project met Bestand -> Nieuw -> Project
.
Zorg ervoor dat u in het linkerdeelvenster van het nieuwe projectvenster de optie Windows Phone selecteert onder de subcategorie Visual C #. Kies Windows Phone App in het hoofdvenster en noem het project wat u maar wilt en klik vervolgens op OK als u klaar bent.
Nu we onze applicatie hebben gemaakt, kunnen we ons concentreren op onze belangrijkste doelstelling: de huidige locatie van de gebruiker bekijken en deze op het scherm weergeven. In eenvoudige bewoordingen zal onze applicatie slechts 2 elementen laten zien, een knop en een TextBlock. De knop zou zijn waarop we zouden klikken om onze app te laten weten wat de huidige locatie van een gebruiker is, en het TextBlock zou de geografische coördinaten van onze huidige locatie weergeven.
Laten we doorgaan en onze eenvoudige gebruikersinterface maken. Gebruik de Visual Studio ToolBox om een knop en een tekstblok ergens op het scherm te verslepen. Op dit punt moet uw toepassing een TextBlock en een knop hebben als onderdeel van de gebruikersinterface.
Het zou er ongeveer zo uit moeten zien:
Ik zou je ten zeerste aanraden om de eigenschap name van zowel je Button als TextBlock te wijzigen om consistent te zijn met deze tutorial. Stel de naam in van de Button die als MyButton moet worden gebruikt en van het TextBlock als MyTextBlock vanuit uw XAML-codevenster.

Op dit moment hebben we onze gebruikersinterface gereed en kunnen we beginnen met het schrijven van de logica voor onze applicatie. Dubbelklik in de ontwerpweergave op de knop en Visual Studio voert u automatisch naar de codeweergave met een methode die al is gemaakt.
private void MyButton_Click (object afzender, RoutedEventArgs e)
Deze gegenereerde methode is een gedelegeerde of terugbelmethode voor de klikgebeurtenis van onze knop. Dit betekent dat de code in deze methode alleen wordt uitgevoerd als op onze knop wordt geklikt. Om aan te sluiten op ons doel, zouden we de code die onze huidige locatie binnen deze methode krijgt plaatsen, omdat we onze huidige locatie willen bepalen wanneer op onze knop wordt geklikt. Om dit te bereiken, gaan we de GeoLocator- en GeoPosition-klassen gebruiken.
De klasse GeoLocator helpt onze huidige locatie te krijgen en doet alle interactie met het GPS / netwerk en retourneert een GeoPosition-object. Aan de andere kant biedt de klasse GeoPosition ons een manier om de geretourneerde gegevens te gebruiken die de GeoLocator retourneert. Overweeg in principe de GeoLocator als een verzoekinstrument en het GeoPosition-object als een reactiehulpmiddel. Deze lessen bieden ook ruimte voor het aanpassen van onze verzoeken en antwoorden. We kunnen de GeoLocator bijvoorbeeld vertellen hoe nauwkeurig (tot de dichtstbijzijnde meter) we onze huidige locatie willen hebben en hoe snel we onze huidige locatie willen laten zien.
Ik heb een methode geschreven die helpt onze huidige locatie te krijgen en ik zal het later in detail uitleggen. Voeg voor nu de volgende naamruimteverwijzing toe aan uw: Windows.Devices.Geolocation;
. Kopieer vervolgens het onderstaande codefragment en plak het in:
private async void GetCurrentLocation ()  Geolocator locationFinder = nieuwe Geolocator   DesiredAccuracyInMeters = 50,  DesiredAccuracy = PositionAccuracy.Standaard ; probeer Geoposition currentLocation = wacht op locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), time-out: TimeSpan.FromSeconds (10)); String-lengtegraad = currentLocation.Coordinate.Longitude.ToString ("0.00"); String latitude = currentLocation.Coordinate.Latitude.ToString ("0.00");  MyTextBlock.Text = "Lang:" + lengtegraad + "Lat:" + breedtegraad;   catch (UnauthorizedAccessException)   MessageBox.Show ("En uitzondering opgetreden");  
Deze methode doet al het werk voor ons en gaat zelfs door om onze TextBlock-tekstproperty voor ons in te stellen. Laten we eens goed bekijken wat de methode doet.
Eerst maken we een nieuw GeoLocator-object genaamd Locatiezoeker
. Vervolgens vertellen we eerst hoe nauwkeurig we in meters willen dat onze locatie is en bepalen we hoe nauwkeurig we het resultaat willen hebben.
Geolocator locationFinder = nieuwe Geolocator  DesiredAccuracyInMeters = 50, DiredComacia = PositieAccuracy.Standaard ;
Vervolgens initiëren we een GeoPosition-object met de naam huidige locatie
binnen een try / catch-blok in het geval van uitzonderingen. Vervolgens wijzen we het toe aan het geretourneerde GeoPosition-object dat ons GeoLocator-object retourneert met behulp van de GetGeoPostionAsync
methode.
Geoposition currentLocation = wacht op locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120),  time-out: TimeSpan.FromSeconds (10));  Stringslengtegraad = currentLocation.Coordinate.Longitude.ToString ("0.00");  Stride latitude = currentLocation.Coordinate.Latitude.ToString ("0.00");
Ten slotte krijgen we onze lengte- en breedtegraad terug en stellen we TextBlock in om deze waarden weer te geven.
MyTextBlock.Text = "Lon:" + lengtegraad + "Lat:" + breedtegraad;
Zo simpel is het! Er zijn nog een paar dingen te doen voordat we onze applicatie testen. Eerst moeten we onze bellen GetCurrentLocation
methode binnen de gedelegeerde methode van onze knop die in eerste instantie voor ons is gemaakt.
private void MyButton_Click (object afzender, RoutedEventArgs e) GetCurrentLocation ();
Dit betekent dat wanneer we op onze knop klikken, onze GetCurrentLocation
Methode wordt uitgevoerd en onze huidige locatie wordt voor ons opgehaald.
Ten slotte moeten we toestemming vragen om de Location API op Windows Phone te gebruiken. We doen dit door ons manifestbestand te bewerken. Zoek in de oplossingsverkenner naar een item met de naam Eigenschappen en schakel deze in om de subentiteiten ervan te bekijken. Een van de bestandsnamen van de subentiteiten moet WMAppManifest.xml zijn. Dubbelklik hierop en u ziet een GUI met vier tabbladen, een van deze is getiteld Capabilities. Selecteer dat tabblad en je zou zoiets als dit moeten zien:
Controleer nu de optie ID_CAP_LOCATION
indien niet aangevinkt en sla uw project op (CTRL + S). Met dat gedaan, kunt u het venster WMAppManifest.xml sluiten. Wat we zojuist hebben gedaan, is expliciet toestemming gevraagd om onze app toestemming te geven om de Windows Phone GPS / Location tool te gebruiken. Nu dat is gebeurd, kunnen we onze applicatie nu voor het eerst uitvoeren!
Als u een fysiek Windows Phone-apparaat gebruikt om te testen, zorg er dan voor dat u Locatie hebt ingeschakeld in de instelling en een geldige internetverbinding hebt via een Wifi- of mobiel netwerk. Dit is erg belangrijk en verplicht voor onze applicatie om te werken. Als u een Windows Phone-emulator gebruikt, moet u ook controleren of de locatie ook is ingeschakeld op de Emulator en of de internetverbinding goed werkt.
Om de applicatie te starten, zoekt u naar de groene afspeelknop in het menu van de visuele studio en selecteert u uw emulator of apparaatoptie als u een handset gebruikt. Zorg ervoor dat de configuratie van de oplossing aan de rechterkant van de knop is ingesteld op Debug.
Klik op de groene knop om de applicatie te starten. De app moet worden gestart en de pagina weergeven waarop we onze gebruikersinterface hebben gebaseerd. Klik nu op de knop om de app te vragen onze huidige locatiecoördinaten te krijgen en er zou een resultaat moeten verschijnen dat er als volgt uitziet:
Inmiddels is het je misschien opgevallen dat we met succes hebben bereikt wat we wilden bereiken en dat onze huidige locatie aan ons wordt getoond. Je kunt zien hoe eenvoudig het was om dit te bereiken met zo'n minimale programmering! Dit is een zeer eenvoudige maar belangrijke bewerking in de ontwikkeling van Windows Phone. U kunt spelen met de aanpasbare instellingen van de GeoLocator- en GeoPosition-klassen. Bedankt voor het lezen!