Durchführen der Geocodierung und umgekehrten Geocodierung
Wichtig
Einstellung des Bing Maps for Enterprise-Diensts
Die UWP MapControl und die Kartendienste des Namespace Windows.Services.Maps basieren auf Bing Maps. Bing Maps for Enterprise ist veraltet und wird eingestellt. Ab diesem Zeitpunkt wird MapControl und die Dienste keine Daten mehr empfangen.
Weitere Informationen finden Sie im Bing Maps Developer Center und in der 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.
- Die MapLocationFinder-Klasse enthält Methoden, die Geocodierung (FindLocationsAsync) und umgekehrte Geocodierung (FindLocationsAtAsync) behandeln.
- Diese Methoden geben beide eine MapLocationFinderResult-Instanz zurück.
- Die Locations-Eigenschaft des MapLocationFinderResult macht eine Auflistung von MapLocation-Objekten verfügbar.
- MapLocation-Objekte verfügen über eine Address-Eigenschaft, die ein MapAddress-Objekt verfügbar macht, das eine Straße darstellt, und 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 Straße 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 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).
- Rufen Sie die FindLocationsAtAsync-Methode der MapLocationFinder-Klasse auf.
- Die FindLocationsAtAsync-Methode gibt ein MapLocationFinderResult -Objekt zurück, das eine Auflistung übereinstimmener MapLocation-Objekte enthält.
- 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.
- 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