Durchführen der Geocodierung und umgekehrten Geocodierung

Wichtig

Einstellung des Bing Maps for Enterprise-Diensts

Die UWP-MapControl- und Kartendienste aus dem Windows.Services.Maps-Namespace basieren auf Bing Maps. Bing Maps for Enterprise ist veraltet und wird eingestellt, zu diesem Zeitpunkt empfangen mapControl und Dienste keine Daten mehr.

Weitere Informationen finden Sie in der Bing Maps Developer Center - und Bing Maps-Dokumentation.

Hinweis

MapControl und Kartendienste erfordern einen Kartenauthentifizierungsschlüssel namens MapServiceToken. Weitere Informationen zum Abrufen und Festlegen eines Kartenauthentifizierungsschlüssels finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.

In diesem Leitfaden wird gezeigt, wie Sie Straßenadressen in geografische Standorte (Geocodierung) konvertieren und geografische Standorte in Straßenadressen (umgekehrte Geocodierung) konvertieren, indem Sie die Methoden der MapLocationFinder-Klasse im Windows.Services.Maps-Namespace aufrufen.

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 Straße 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 des MapLocationFinderResult, um eine MapLocation-Auflistung verfügbar zu machen. Möglicherweise gibt es mehrere MapLocation-Objekte , 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 (umgekehrter Geocode)

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 Auflistung übereinstimmener MapLocation-Objekte enthält.
  3. Verwenden Sie die Locations-Eigenschaft des MapLocationFinderResult, um eine MapLocation-Auflistung verfügbar zu machen. Möglicherweise gibt es mehrere MapLocation-Objekte , da das System möglicherweise mehrere Speicherorte findet, die der angegebenen Eingabe entsprechen.
  4. Greifen Sie über die Address-Eigenschaft der einzelnen MapLocation-Objekte auf MapAddress-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