Xamarin.Essentials: Codificación geográfica

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.

Primeros pasos

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.

Para acceder a la funcionalidad de Geocoding, se requiere la siguiente configuración específica para la plataforma.

No se requiere configuración adicional.

Uso de Geocoding

Agregue una referencia a Xamarin.Essentials en la clase:

using Xamarin.Essentials;

Obtención de coordenadas de ubicación para una dirección:

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. Si no lo está, es posible que la propiedad Altitude sea null o que el valor sea cero. Si lo está, el valor se expresa en metros sobre el nivel del mar.

Uso la geocodificación inversa

La geocodificación inversa es el proceso de obtener marcas de posición para un conjunto de coordenadas existente:

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 ubicaciones

Las clases Location y LocationExtensions definen métodos para calcular la distancia entre dos ubicaciones. Consulte el artículo Xamarin.Essentials: Geolocalización para ver un ejemplo.

API

Encuentre más vídeos de Xamarin en Channel 9 y YouTube.