Geolocation ist ein entscheidender Aspekt der mobilen Entwicklung. Glücklicherweise ist es einfach, den Standort von Benutzern unter Windows Phone 8 zu finden. Dieses Tutorial zeigt Ihnen, wie es gemacht wird, indem Sie die Geolocator
Klasse.
Das Windows Phone SDK ist eine sehr leistungsfähige Entwicklungsplattform, mit der Entwickler großartige Anwendungen mit dem Silverlight-Framework erstellen können. Das kürzlich durchgeführte Upgrade des SDK auf Version 8.0 (Windows Phone 8) bringt eine Vielzahl von Änderungen mit sich, durch die einige allgemeine Aufgaben einfacher ausgeführt werden können. In Windows Phone 8 wurde unter anderem die Standort-API verbessert. In früheren Versionen des Windows Phone-SDK war der aktuelle Standort eines Benutzers etwas unordentlich, aber die derzeitige Technik dafür wurde verbessert und direkter gemacht.
Die neue Technik verwendet den ASYNC-Methodenaufruf von Microsoft, der die Leistung von Anwendungen verbessert und gleichzeitig Zugriff auf den Standort eines Benutzers ermöglicht. Schauen wir uns diese neue Art des Zugriffs auf den aktuellen Standort von Windows Phone 8 an.
Um dieses Tutorial auszuprobieren, gehe ich davon aus, dass Sie grundlegende Kenntnisse der Windows Phone-Plattform haben. Ich möchte auch glauben, dass Sie ein grundlegendes Verständnis von XAML und C # haben, da dies die Sprache ist, mit der wir unsere Anwendung schreiben werden. Sie benötigen außerdem Visual Studio 2012 oder höher mit dem Windows Phone 8-SDK und einem funktionsfähigen Windows Phone-Emulator, der auf Ihrem lokalen Computer installiert ist. Anstelle des Emulators können Sie alternativ auch ein Windows Phone-Gerät verwenden.
Öffnen Sie Visual Studio und erstellen Sie ein neues Windows Phone-Projekt mit Datei -> Neu -> Projekt
.
Stellen Sie sicher, dass Sie im linken Bereich des neuen Projektfensters die Option Windows Phone unter der Unterkategorie Visual C # auswählen. Wählen Sie im Hauptfenster die Windows Phone-App und benennen Sie das Projekt nach Belieben. Klicken Sie anschließend auf OK.
Nun, da wir unsere Anwendung erstellt haben, können wir uns auf unser Hauptziel konzentrieren, den aktuellen Standort des Benutzers zu ermitteln und auf dem Bildschirm anzuzeigen. Einfach ausgedrückt, werden in unserer Anwendung nur zwei Elemente angezeigt, ein Button und ein TextBlock. Der Button wäre das, was wir klicken würden, um unserer App mitzuteilen, dass sie den aktuellen Standort eines Benutzers erfassen soll, und der TextBlock würde die Geokoordinaten unseres aktuellen Standorts anzeigen.
Lassen Sie uns fortfahren und unsere einfache Benutzeroberfläche erstellen. Verwenden Sie die Visual Studio ToolBox, um eine Schaltfläche und einen TextBlock an eine beliebige Stelle auf dem Bildschirm zu ziehen. Zu diesem Zeitpunkt sollte Ihre Anwendung über einen TextBlock und einen Button als Teil der Benutzeroberfläche verfügen.
Es sollte ähnlich aussehen:
Ich würde Ihnen dringend empfehlen, die name -Eigenschaft von Button und TextBlock zu ändern, um mit diesem Lernprogramm konsistent zu sein. Legen Sie den Namen des Buttons als MyButton und des TextBlock als MyTextBlock in Ihrem XAML-Codefenster fest.

An diesem Punkt haben wir unsere Benutzeroberfläche bereit und können die Logik für unsere Anwendung schreiben. Doppelklicken Sie in der Designersicht auf die Schaltfläche. Visual Studio sollte Sie automatisch mit einer bereits erstellten Methode in die Codeansicht bringen.
private void MyButton_Click (Objektsender, RoutedEventArgs e)
Diese generierte Methode ist eine Delegat- oder Rückrufmethode für das Klickereignis unserer Schaltfläche. Das bedeutet, dass der Code innerhalb dieser Methode nur ausgeführt wird, wenn auf unsere Schaltfläche geklickt wird. Um unser Ziel zu erreichen, würden wir den Code, der unseren aktuellen Standort bezieht, in diese Methode einbetten, da bei jedem Klick auf unseren Button der aktuelle Standort bestimmt werden soll. Um dies zu erreichen, werden wir die GeoLocator- und die GeoPosition-Klasse verwenden.
Die GeoLocator-Klasse hilft beim Abrufen unseres aktuellen Standorts, führt alle Interaktionen mit dem GPS / Netzwerk durch und gibt ein GeoPosition-Objekt zurück. Andererseits bietet uns die GeoPosition-Klasse eine Möglichkeit, die vom GeoLocator zurückgegebenen Daten zu verwenden. Stellen Sie sich den GeoLocator grundsätzlich als Anfragetool und das GeoPosition-Objekt als Antworttool vor. Diese Kurse bieten auch Raum für die Anpassung unserer Anfragen und Antworten. Zum Beispiel können wir dem GeoLocator mitteilen, wie genau (auf den nächsten Meter) unser aktueller Standort sein soll und wie schnell wir unseren aktuellen Standort abfragen möchten.
Ich habe eine Methode geschrieben, mit der wir unseren aktuellen Standort ermitteln können. Ich werde es später noch ausführlich erklären. Fügen Sie zunächst den folgenden Namespace-Verweis zu Ihrem hinzu: Windows.Devices.Geolocation;
. Kopieren Sie als Nächstes den Code-Ausschnitt und fügen Sie ihn ein:
Private async void GetCurrentLocation () Geolocator locationFinder = neuer Geolocator   DesiredAccuracyInMeters = 50, ired DesiredAccuracy = PositionAccuracy.Default ; try Geoposition currentLocation = await locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120), Timeout: TimeSpan.FromSeconds (10)); String longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); String width = currentLocation.Coordinate.Latitude.ToString ("0.00"); MyTextBlock.Text = "Long:" + Längengrad + "Lat:" + Breitengrad;   catch (UnauthorizedAccessException)   MessageBox.Show ("And Exception Occured");  
Diese Methode erledigt die ganze Arbeit für uns und setzt sogar unsere TextBlock-Texteigenschaft für uns fest. Untersuchen wir genau, was die Methode macht.
Zunächst erstellen wir ein neues GeoLocator-Objekt namens locationFinder
. Wir sagen dann zuerst, wie genau wir unseren Standort in Metern angeben möchten, und legen fest, wie genau wir das Ergebnis wollen.
Geolocator locationFinder = neuer Geolocator Des DesiredAccuracyInMeters = 50, DesiredAccuracy = PositionAccuracy.Default ;
Als Nächstes instantiieren wir ein GeoPosition-Objekt, das aufgerufen wird aktueller Standort
innerhalb eines try / catch-Blocks im Falle von Ausnahmen. Wir weisen es dann dem zurückgegebenen GeoPosition-Objekt zu, das unser GeoLocator-Objekt mit dem zurückgibt GetGeoPostionAsync
Methode.
Geoposition currentLocation = await locationFinder.GetGeopositionAsync (maximumAge: TimeSpan.FromSeconds (120),  Timeout: TimeSpan.FromSeconds (10)); TrString longitude = currentLocation.Coordinate.Longitude.ToString ("0.00"); String-Breite = currentLocation.Coordinate.Latitude.ToString ("0,00");
Zum Schluss erhalten wir unseren zurückgegebenen Längen- und Breitengrad und setzen unseren TextBlock, um diese Werte anzuzeigen.
MyTextBlock.Text = "Lon:" + Längengrad + "Lat:" + Breitengrad;
So einfach ist das! Bevor wir unsere Anwendung testen, müssen Sie noch ein paar weitere Dinge tun. Zuerst müssen wir unsere anrufen GetCurrentLocation
Methode innerhalb der Delegat-Methode unseres Buttons, der ursprünglich für uns erstellt wurde.
private void MyButton_Click (Objektsender, RoutedEventArgs e) GetCurrentLocation ();
Das heißt, wenn wir auf unseren Button klicken, wird unser GetCurrentLocation
Die Methode wird ausgeführt und der aktuelle Standort wird für uns abgerufen.
Schließlich müssen wir die Berechtigung zur Verwendung der Standort-API unter Windows Phone anfordern. Dazu bearbeiten wir unsere Manifestdatei. Suchen Sie im Lösungs-Explorer nach einem Eintrag mit dem Titel Eigenschaften und aktivieren Sie ihn, um seine Untereinträge anzuzeigen. Ein Dateiname der Untereinträge sollte WMAppManifest.xml sein. Doppelklicken Sie darauf, und Sie sehen eine GUI mit vier Registerkarten. Eine davon trägt den Titel Capabilities. Wählen Sie diese Registerkarte aus und Sie sollten etwa Folgendes sehen:
Überprüfen Sie jetzt die Option ID_CAP_LOCATION
Wenn dies nicht aktiviert ist, speichern Sie Ihr Projekt (STRG + S). Damit können Sie das Fenster WMAppManifest.xml schließen. Was wir gerade getan haben, ist explizit die Erlaubnis, dass unsere App das GPS / Location-Tool von Windows Phone verwenden darf. Damit können wir unsere Anwendung jetzt zum ersten Mal ausführen!
Wenn Sie zum Testen ein physisches Windows-Telefongerät verwenden, stellen Sie sicher, dass Standort in der Einstellung aktiviert ist und eine gültige Internetverbindung über ein WLAN- oder Mobilnetzwerk besteht. Dies ist sehr wichtig und zwingend, damit unsere Bewerbung funktioniert. Wenn Sie einen Windows Phone-Emulator verwenden, stellen Sie außerdem sicher, dass der Standort auch im Emulator aktiviert ist und die Internetverbindung funktioniert.
Um die Anwendung zu starten, suchen Sie im Visual Studio-Menü nach der grünen Wiedergabetaste und wählen Sie Ihren Emulator oder die Geräteoption aus, wenn Sie ein Mobilteil verwenden. Stellen Sie sicher, dass die Lösungskonfiguration auf der rechten Seite der Schaltfläche auf Debug gesetzt ist.
Klicken Sie auf die grüne Schaltfläche, um die Anwendung zu starten. Die App sollte die Seite starten und anzeigen, auf der wir unsere Benutzeroberfläche gezeichnet haben. Klicken Sie nun auf die Schaltfläche, um die App mit den aktuellen Standortkoordinaten zu beauftragen. Das Ergebnis sollte folgendermaßen aussehen:
Inzwischen haben Sie vielleicht schon gemerkt, dass wir das erreicht haben, was wir uns vorgenommen haben, und unser aktueller Standort wird uns angezeigt. Sie können sehen, wie einfach dies mit einer so geringen Programmierung war! Dies ist eine sehr einfache, aber wichtige Operation in der Windows Phone-Entwicklung. Sie können mit den anpassbaren Einstellungen der GeoLocator- und GeoPosition-Klassen frei herumspielen. Danke fürs Lesen!