Xamarin.Essentials: Codificación geográficaXamarin.Essentials: Geocoding

La clase Geocoding proporciona API para geocodificar una marca de posición en coordenadas de posición e invertir las coordenadas de código geográfico a una marca de posición.The Geocoding class provides APIs to geocode a placemark to a positional coordinates and reverse geocode coordinates to a placemark.

Primeros pasosGet started

Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Para acceder a la funcionalidad de Geocoding, se requiere la siguiente configuración específica para la plataforma.To access the Geocoding functionality the following platform specific setup is required.

No se requiere configuración adicional.No additional setup required.

Uso de GeocodingUsing Geocoding

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Obtención de coordenadas de ubicación para una dirección:Getting location coordinates for an address:

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
}

La altitud no siempre está disponible.The altitude isn't always available. Si no lo está, es posible que la propiedad Altitude sea null o que el valor sea cero.If it is not available, the Altitude property might be null or the value might be zero. Si lo está, el valor se expresa en metros sobre el nivel del mar.If the altitude is available, the value is in meters above sea level.

Uso la geocodificación inversaUsing Reverse Geocoding

La geocodificación inversa es el proceso de obtener marcas de posición para un conjunto de coordenadas existente:Reverse geocoding is the process of getting placemarks for an existing set of coordinates:

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
}

Distancia entre dos ubicacionesDistance between Two Locations

Las clases Location y LocationExtensions definen métodos para calcular la distancia entre dos ubicaciones.The Location and LocationExtensions classes define methods to calculate the distance between two locations. Consulte el artículo Xamarin.Essentials: Geolocalización para ver un ejemplo.See the article Xamarin.Essentials: Geolocation for an example.

APIAPI

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.Find more Xamarin videos on Channel 9 and YouTube.