Executar geocódigo e geocódigo reverso
Observaçã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 de rua em localizações geográficas (geocodificação) e converter localizações geográficas em endereços de rua (geocodificação inversa) chamando os métodos da classe MapLocationFinder no namespace Windows.Services.Maps .
Dica
Para saber mais sobre como usar mapas em seu aplicativo, baixe o exemplo MapControl do repositório de exemplos universais do Windows no GitHub.
As classes envolvidas em geocodificação e geocódigo reverso são organizadas da seguinte maneira.
- A classe MapLocationFinder contém métodos que lidam com geocodificação (FindLocationsAsync) e geocodificação reversa (FindLocationsAtAsync).
- Esses métodos retornam uma instância MapLocationFinderResult .
- A propriedade Locations do MapLocationFinderResult expõe uma coleção de objetos MapLocation .
- Os objetos MapLocation têm uma propriedade Address, que expõe um objeto MapAddress que representa um endereço de rua e uma propriedade Point, que expõe um objeto Geopoint que representa uma localização geográfica.
Importante
Você deve especificar uma chave de autenticação de mapas para poder usar os serviços de mapa. Para obter mais informações, consulte Solicitar uma chave de autenticação de mapas.
Obter uma localização (geocódigo)
Esta seção mostra como converter um endereço de rua ou um nome de local em uma localização geográfica (geocodificação).
- Chame uma das sobrecargas do método FindLocationsAsync da classe MapLocationFinder com um nome de local ou endereço de rua.
- O método FindLocationsAsync retorna um objeto MapLocationFinderResult .
- 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 caixa de texto tbOutputText
.
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 inversa).
- Chame o método FindLocationsAtAsync da classe MapLocationFinder.
- O método FindLocationsAtAsync retorna um objeto MapLocationFinderResult que contém uma coleção de objetos MapLocation correspondentes.
- 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.
- 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 caixa de texto tbOutputText
.
town = Redmond
Tópicos relacionados
- Amostra de mapa UWP
- Exemplo de aplicativo de tráfego UWP
- Diretrizes de design para mapas
- Vídeo: Aproveitando mapas e localização entre telefone, tablet e computador em seus aplicativos do Windows
- Central de Desenvolvedores do Bing Mapas
- Classe MapLocationFinder
- Método FindLocationsAsync
- Método FindLocationsAtAsync
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de