Udostępnij przez


Wykonywanie geokodowania i odwrotnego geokodowania

Ważne

Interfejsy API platformy UWP MapControl i Windows Maps (Windows.Services.Maps.*) są przestarzałe i mogą nie być dostępne w przyszłych wersjach systemu Windows. Aby uzyskać więcej informacji, zobacz Zasoby dotyczące przestarzałych funkcji.

Ważne

Wycofanie usługi Mapy Bing dla przedsiębiorstw

MapControl platformy UWP i usługi map z przestrzeni nazw Windows.Services.Maps opierają się na mapach Bing. Mapy Bing dla przedsiębiorstw są przestarzałe i zostaną wycofane, wówczas kontrolka MapControl i usługi nie będą już odbierać danych.

Aby uzyskać więcej informacji, zobacz dokumentację Centrum deweloperów map Bing i Mapy Bing.

Uwaga / Notatka

MapControl i usługi mapowe wymagają klucza uwierzytelniania map o nazwie MapServiceToken. Aby uzyskać więcej informacji na temat pobierania i ustawiania klucza uwierzytelniania map, zobacz Żądanie klucza uwierzytelniania map.

W tym przewodniku pokazano, jak przekonwertować adresy uliczne na lokalizacje geograficzne (geokodowanie) i przekonwertować lokalizacje geograficzne na adresy uliczne (odwrotne geokodowanie), wywołując metody klasy MapLocationFinder w Windows.Services.Maps przestrzeni nazw.

Klasy związane z geokodowaniem i odwrotnym geokodowaniem są zorganizowane w następujący sposób.

Ważne

 Aby można było korzystać z usług mapowania, należy określić klucz uwierzytelniania mapy. Aby uzyskać więcej informacji, zapoznaj się z sekcją Wnioskowanie klucza uwierzytelnienia map.

Uzyskiwanie lokalizacji (kod geograficzny)

W tej sekcji pokazano, jak przekonwertować adres ulicy lub nazwę miejsca na lokalizację geograficzną (geokodowanie).

  1. Wywołaj jedną z wersji przeciążonych metody FindLocationsAsync w klasie MapLocationFinder, używając nazwy miejsca lub adresu ulicy.
  2. Metoda FindLocationsAsync zwraca obiekt MapLocationFinderResult.
  3. Użyj właściwości LocationsMapLocationFinderResult, aby uwidocznić kolekcję obiektów MapLocation. Może istnieć wiele obiektów MapLocation, ponieważ system może znaleźć wiele lokalizacji odpowiadających danym danym wejściu.
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() + ")";
   }
}

Ten kod wyświetla następujące wyniki w polu tekstowym tbOutputText.

result = (47.6406099647284,-122.129339994863)

Uzyskiwanie adresu (odwrotny kod geograficzny)

W tej sekcji pokazano, jak przekonwertować lokalizację geograficzną na adres (odwrotne geokodowanie).

  1. Wywołaj metodę FindLocationsAtAsync klasy MapLocationFinder.
  2. Metoda FindLocationsAtAsync zwraca obiekt MapLocationFinderResult zawierający kolekcję pasujących obiektów MapLocation.
  3. Użyj właściwości LocationsMapLocationFinderResult, aby uwidocznić kolekcję obiektów MapLocation. Może istnieć wiele obiektów MapLocation, ponieważ system może znaleźć wiele lokalizacji odpowiadających danym danym wejściu.
  4. Uzyskaj dostęp do obiektów MapAddress za pośrednictwem właściwości Address każdej lokalizacji na mapie MapLocation.
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;
   }
}

Ten kod wyświetla następujące wyniki w polu tekstowym tbOutputText.

town = Redmond