Partilhar via


Xamarin.Essentials: Geocodificação

A classe Geocoding fornece APIs para definir o código geográfico de um marcador de local para coordenadas posicionais e reverter as coordenadas de código geográfico para um marcador de local.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Para acessar a funcionalidade Geocodificação, a seguinte configuração específica da plataforma é necessária.

Não exige mais configurações.

Como usar Geocoding

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

Obter coordenadas de local de um endereço:

try
{
    var address =  "Microsoft Building 25 Redmond WA USA";
    var locations = await Geocoding.GetLocationsAsync(address);

    var location = locations?.FirstOrDefault();
    if (location != null)
    {
        Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}");
    }
}
catch (FeatureNotSupportedException fnsEx)
{
    // Feature not supported on device
}
catch (Exception ex)
{
    // Handle exception that may have occurred in geocoding
}

A altitude nem sempre está disponível. Se não estiver disponível, a propriedade Altitude poderá ser null ou o valor poderá ser zero. Se a altitude estiver disponível, o valor estará em metros acima do nível do mar.

Uso da geocodificação reversa

Geocodificação reversa é o processo de obtenção de marcadores de local para um conjunto existente de coordenadas:

try
{
    var lat = 47.673988;
    var lon = -122.121513;

    var placemarks = await Geocoding.GetPlacemarksAsync(lat, lon);

    var placemark = placemarks?.FirstOrDefault();
    if (placemark != null)
    {
        var geocodeAddress =
            $"AdminArea:       {placemark.AdminArea}\n" +
            $"CountryCode:     {placemark.CountryCode}\n" +
            $"CountryName:     {placemark.CountryName}\n" +
            $"FeatureName:     {placemark.FeatureName}\n" +
            $"Locality:        {placemark.Locality}\n" +
            $"PostalCode:      {placemark.PostalCode}\n" +
            $"SubAdminArea:    {placemark.SubAdminArea}\n" +
            $"SubLocality:     {placemark.SubLocality}\n" +
            $"SubThoroughfare: {placemark.SubThoroughfare}\n" +
            $"Thoroughfare:    {placemark.Thoroughfare}\n";

        Console.WriteLine(geocodeAddress);
    }
}
catch (FeatureNotSupportedException fnsEx)
{
    // Feature not supported on device
}
catch (Exception ex)
{
    // Handle exception that may have occurred in geocoding
}

Distância entre dois locais

As classes Location e LocationExtensions definem métodos para calcular a distância entre dois locais. Veja o artigo Xamarin.Essentials: Geolocalização para um exemplo.

API

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.