Поделиться через


геокодирование

Browse sample. Обзор примера

В этой статье описывается, как использовать интерфейс многоплатформенного приложения .NET (.NET MAUI). IGeocoding Эти интерфейсы предоставляют API для геокодировки метки с позиционных координат и координат обратного геокода на метку.

Реализация интерфейса по умолчанию IGeocoding доступна через Geocoding.Default свойство. Интерфейс IGeocoding и Geocoding класс содержатся в Microsoft.Maui.Devices.Sensors пространстве имен.

Начать

Для доступа к функциям геокодирования требуется следующая настройка для конкретной платформы.

Никакой настройки для этого не требуется.

Использование геокодирования

В следующем примере показано, как получить координаты расположения для адреса:

string address = "Microsoft Building 25 Redmond WA USA";
IEnumerable<Location> locations = await Geocoding.Default.GetLocationsAsync(address);

Location location = locations?.FirstOrDefault();

if (location != null)
    Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}");

Значения высоты не всегда доступно. Если он недоступен, Altitude свойство может быть null, или значение может быть 0. Если высота доступна, значение указывается в метрах над уровнем моря.

Обратная геокодирование

Обратная геокодирование — это процесс получения меток для существующего набора координат. В следующем примере показано получение меток.

private async Task<string> GetGeocodeReverseData(double latitude = 47.673988, double longitude = -122.121513)
{
    IEnumerable<Placemark> placemarks = await Geocoding.Default.GetPlacemarksAsync(latitude, longitude);

    Placemark placemark = placemarks?.FirstOrDefault();

    if (placemark != null)
    {
        return
            $"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";

    }

    return "";
}

Получение расстояния между двумя расположениями

Классы Location и LocationExtensions определяют методы вычисления расстояния между двумя расположениями. Пример получения расстояния между двумя расположениями см. в разделе "Расстояние между двумя расположениями".