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.

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.

  1. Rufen Sie eine der Überladungen der FindLocationsAsync-Methode der MapLocationFinder-Klasse mit einem Ortsnamen oder einer Straßenadresse auf.
  2. Die FindLocationsAsync-Methode gibt ein MapLocationFinderResult-Objekt zurück.
  3. 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).

  1. Rufen Sie die FindLocationsAtAsync-Methode der MapLocationFinder-Klasse auf.
  2. Die FindLocationsAtAsync-Methode gibt ein MapLocationFinderResult-Objekt zurück, das eine Sammlung übereinstimmender MapLocation-Objekte enthält.
  3. 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.
  4. 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