Durchführen der Geocodierung und umgekehrten Geocodierung
Hinweis
MapControl und Kartendienste erfordern einen Karten-Authentifizierungsschlüssel namens MapServiceToken. Weitere Informationen zum Abrufen und Festlegen eines Kartenauthentifizierungsschlüssels finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.
In diesem Leitfaden erfahren Sie, wie Sie Straßenadressen in geografische Standorte (Geocodierung) konvertieren und geografische Standorte in Straßenadressen konvertieren (umgekehrte Geocodierung), indem Sie die Methoden der MapLocationFinder-Klasse im Windows.Services.Maps-Namespace aufrufen.
Tipp
Wenn Sie mehr über die Verwendung von Karten in Ihrer App erfahren möchten, laden Sie das MapControl-Beispiel aus dem Repository für universelle Windows-Beispiele auf GitHub herunter.
Die Klassen, die an der Geocodierung und umgekehrten Geocodierung beteiligt sind, sind wie folgt organisiert.
- Die MapLocationFinder-Klasse enthält Methoden, die die Geocodierung (FindLocationsAsync) und die umgekehrte Geocodierung (FindLocationsAtAsync) behandeln.
- Diese Methoden geben beide ein MapLocationFinderResult-instance zurück.
- Die Locations-Eigenschaft des MapLocationFinderResult-Objekts macht eine Auflistung von MapLocation-Objekten verfügbar.
- MapLocation-Objekte verfügen sowohl über eine Address-Eigenschaft , die ein MapAddress-Objekt verfügbar macht, das eine Straßenadresse darstellt, als auch eine Point-Eigenschaft , die ein Geopoint-Objekt verfügbar macht, das einen geografischen Standort darstellt.
Wichtig
Sie müssen einen Kartenauthentifizierungsschlüssel angeben, bevor Sie Kartendienste verwenden können. Weitere Informationen finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.
Abrufen eines Standorts (Geocode)
In diesem Abschnitt wird gezeigt, wie Sie eine Adresse oder einen Ortsnamen in einen geografischen Standort (Geocodierung) konvertieren.
- Rufen Sie eine der Überladungen der FindLocationsAsync-Methode der MapLocationFinder-Klasse mit einem Ortsnamen oder einer Straßenadresse auf.
- Die FindLocationsAsync-Methode gibt ein MapLocationFinderResult-Objekt zurück.
- Verwenden Sie die Locations-Eigenschaft von MapLocationFinderResult , um eine MapLocation-Sammlungsobjekte verfügbar zu machen. Es können mehrere MapLocation-Objekte vorhanden sein, da das System möglicherweise mehrere Speicherorte findet, die der angegebenen Eingabe entsprechen.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void geocodeButton_Click(object sender, RoutedEventArgs e)
{
// The address or business to geocode.
string addressToGeocode = "Microsoft";
// The nearby location to use as a query hint.
BasicGeoposition queryHint = new BasicGeoposition();
queryHint.Latitude = 47.643;
queryHint.Longitude = -122.131;
Geopoint hintPoint = new Geopoint(queryHint);
// Geocode the specified address, using the specified reference point
// as a query hint. Return no more than 3 results.
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAsync(
addressToGeocode,
hintPoint,
3);
// If the query returns results, display the coordinates
// of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
tbOutputText.Text = "result = (" +
result.Locations[0].Point.Position.Latitude.ToString() + "," +
result.Locations[0].Point.Position.Longitude.ToString() + ")";
}
}
Dieser Code zeigt die folgenden Ergebnisse im tbOutputText
-Textfeld an:
result = (47.6406099647284,-122.129339994863)
Abrufen einer Adresse (umgekehrte Geocodierung)
In diesem Abschnitt wird gezeigt, wie Sie einen geografischen Standort in eine Adresse konvertieren (umgekehrte Geocodierung).
- Rufen Sie die FindLocationsAtAsync-Methode der MapLocationFinder-Klasse auf.
- Die FindLocationsAtAsync-Methode gibt ein MapLocationFinderResult-Objekt zurück, das eine Sammlung übereinstimmender MapLocation-Objekte enthält.
- Verwenden Sie die Locations-Eigenschaft von MapLocationFinderResult , um eine MapLocation-Sammlungsobjekte verfügbar zu machen. Es können mehrere MapLocation-Objekte vorhanden sein, da das System möglicherweise mehrere Speicherorte findet, die der angegebenen Eingabe entsprechen.
- Greifen Sie auf MapAddress-Objekte über die Address-Eigenschaft der einzelnen MapLocation-Objekte zu.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void reverseGeocodeButton_Click(object sender, RoutedEventArgs e)
{
// The location to reverse geocode.
BasicGeoposition location = new BasicGeoposition();
location.Latitude = 47.643;
location.Longitude = -122.131;
Geopoint pointToReverseGeocode = new Geopoint(location);
// Reverse geocode the specified geographic location.
MapLocationFinderResult result =
await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
// If the query returns results, display the name of the town
// contained in the address of the first result.
if (result.Status == MapLocationFinderStatus.Success)
{
tbOutputText.Text = "town = " +
result.Locations[0].Address.Town;
}
}
Dieser Code zeigt die folgenden Ergebnisse im tbOutputText
-Textfeld an:
town = Redmond
Zugehörige Themen
- Beispiel für UWP-Karte
- Beispiel für eine UWP-App mit Verkehrsinformationen
- Entwurfsrichtlinien für Karten
- Video: Nutzen von Karten und Standort zwischen Smartphone, Tablet und PC in Ihren Windows-Apps
- Bing Karten Developer Center
- MapLocationFinder-Klasse
- FindLocationsAsync-Methode
- FindLocationsAtAsync-Methode
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für