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


Xamarin.EssentialsКарта:

Класс Map позволяет приложению открывать установленное приложение карт на определенном местоположении или метке.

Начало работы

Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.

Использование класса Map

Добавьте ссылку на Xamarin.Essentials в своем классе:

using Xamarin.Essentials;

Чтобы использовать функции класса Map, вызовите метод OpenAsync с параметром Location или Placemark для открытия с дополнительными параметрами MapLaunchOptions.

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { Name = "Microsoft Building 25" };

        try
        {
            await Map.OpenAsync(location, options);
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

При открытии с параметром Placemark требуется следующая информация:

  • CountryName
  • AdminArea
  • Thoroughfare
  • Locality
public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var placemark = new Placemark
            {
                CountryName = "United States",
                AdminArea = "WA",
                Thoroughfare = "Microsoft Building 25",
                Locality = "Redmond"
            };
        var options =  new MapLaunchOptions { Name = "Microsoft Building 25" };

        try
        {
            await Map.OpenAsync(placemark, options);
        }
        catch (Exception ex)
        {
            // No map application available to open or placemark can not be located
        }
    }
}

Методы расширения

Если у вас уже есть ссылка на Location или Placemark, вы можете использовать встроенный метод расширения OpenMapAsync с дополнительными параметрами MapLaunchOptions:

public class MapTest
{
    public async Task OpenPlacemarkOnMap(Placemark placemark)
    {
        try
        {
            await placemark.OpenMapAsync();
        }
        catch (Exception ex)
        {
            // No map application available to open
        }
    }
}

Режим направлений

Если вызвать OpenMapAsync без параметров MapLaunchOptions, карта запустится для указанного расположения. При желании можно рассчитать навигационный маршрут с текущего положения устройства. Для этого нужно установить NavigationMode в MapLaunchOptions:

public class MapTest
{
    public async Task NavigateToBuilding25()
    {
        var location = new Location(47.645160, -122.1306032);
        var options =  new MapLaunchOptions { NavigationMode = NavigationMode.Driving };

        await Map.OpenAsync(location, options);
    }
}

Различия платформ

  • NavigationMode поддерживает езду на велосипеде, вождение и ходьбу.

Особенности реализации для платформ

Android использует схему geo: Uri для запуска приложения карт на устройстве. Для пользователя может отобразиться запрос на выбор из существующих приложений того, которое поддерживает эту схему Uri. Xamarin.Essentials тестируется с помощью службы Google Maps, которая поддерживает эту схему.

API

Другие видео о Xamarin см. на Channel 9 и YouTube.