Compartilhar via


Executar geocodificação e geocodificação reversa

Importante

Desativação do serviço Bing Maps para empresas

O UWP MapControl e os serviços de mapa do namespace Windows.Services.Maps dependem do Bing Maps. O Bing Maps for Enterprise foi preterido e será desativado, momento em que o MapControl e os serviços não receberão mais dados.

Para obter mais informações, consulte a documentação da Central de Desenvolvedores do Bing Maps e do Bing Maps.

Observação

O MapControl e os serviços de mapa exigem uma chave de autenticação de mapas chamada MapServiceToken. Para saber mais sobre como obter e definir uma chave de autenticação de mapas, consulte Solicitar uma chave de autenticação de mapas.

Este guia mostra como converter endereços em localizações geográficas (geocodificação) e converter localizações geográficas em endereços (geocodificação reversa) chamando os métodos da classe MapLocationFinder no namespace Windows.Services.Maps.

As classes envolvidas na geocodificação e geocodificação reversa são organizadas da seguinte forma.

Importante

 Você deve especificar uma chave de autenticação de mapas antes de poder utilizar os serviços de mapa. Para obter mais informações, consulte Solicitar uma chave de autenticação de mapas.

Obter um local (Geocódigo)

Esta seção mostra como converter um endereço ou um nome de lugar em uma localização geográfica (geocodificação).

  1. Chame uma das sobrecargas do método FindLocationsAsync da classe MapLocationFinder com um nome de lugar ou endereço.
  2. O método FindLocationsAsync retorna um objeto MapLocationFinderResult.
  3. Use a propriedade Locations do MapLocationFinderResult para expor uma coleção de objetos MapLocation. Pode haver vários objetos MapLocation porque o sistema pode encontrar vários locais que correspondem à entrada fornecida.
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() + ")";
   }
}

Esse código exibe os seguintes resultados na tbOutputText caixa de texto.

result = (47.6406099647284,-122.129339994863)

Obter um endereço (geocódigo reverso)

Esta seção mostra como converter uma localização geográfica em um endereço (geocodificação reversa).

  1. Chame o método FindLocationsAtAsync da classe MapLocationFinder.
  2. O método FindLocationsAtAsync retorna um objeto MapLocationFinderResult que contém uma coleção de objetos MapLocation correspondentes.
  3. Use a propriedade Locations do MapLocationFinderResult para expor uma coleção de objetos MapLocation. Pode haver vários objetos MapLocation porque o sistema pode encontrar vários locais que correspondem à entrada fornecida.
  4. Acesse objetos MapAddress por meio da propriedade Address de cada 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;
   }
}

Esse código exibe os seguintes resultados na tbOutputText caixa de texto.

town = Redmond