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


Открытие приложения карты

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

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

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

Начать

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

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

В файле Platform/Android/AndroidManifest.xml добавьте следующие queries/intent узлы в manifest узел:

<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="geo"/>
  </intent>
</queries>

Использование карты

Функциональные возможности карты работают путем вызова IMap.OpenAsync метода и передачи экземпляра Location или Placemark типа. В следующем примере откроется установленное приложение карты в определенном расположении GPS:

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

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

Совет

Placemark И Location типы находятся в Microsoft.Maui.Devices.Sensors пространстве имен.

При открытии Placemark карты требуется дополнительная информация. Информация помогает приложению карты искать место, которое вы ищете. Требуется указать следующие сведения:

public async Task NavigateToBuilding()
{
    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.Default.OpenAsync(placemark, options);
    }
    catch (Exception ex)
    {
        // No map application available to open or placemark can not be located
    }
}

Тестирование, если карта открыта

Существует всегда вероятность сбоя открытия приложения карты, например, если нет приложения карты или ваше приложение не имеет правильных разрешений. Для каждой IMap.OpenAsync перегрузки метода существует соответствующий IMap.TryOpenAsync метод, который возвращает логическое значение, указывающее, что приложение карты было успешно открыто. В следующем примере кода метод используется TryOpenAsync для открытия карты:

var location = new Location(47.645160, -122.1306032);
var options = new MapLaunchOptions { Name = "Microsoft Building 25" };

if (await Map.Default.TryOpenAsync(location, options) == false)
{
    // Map failed to open
}

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

Если Microsoft.Maui.Devices.Sensors пространство имен импортируется, которое автоматически выполняет новый проект MAUI .NET, можно использовать встроенный метод OpenMapsAsync расширения для открытия карты:

public async Task NavigateToBuildingByPlacemark()
{
    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 placemark.OpenMapsAsync(options);
    }
    catch (Exception ex)
    {
        // No map application available to open or placemark can not be located
    }
}

Добавление элементов навигации

При открытии карты можно вычислить маршрут из текущего расположения устройства в указанное расположение. Передайте тип методу MapLaunchOptionsMap.OpenAsync , указав режим навигации. В следующем примере открывается приложение карты и указывается режим навигации для вождения:

public async Task DriveToBuilding25()
{
    var location = new Location(47.645160, -122.1306032);
    var options = new MapLaunchOptions { Name = "Microsoft Building 25",
                                         NavigationMode = NavigationMode.Driving };

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

Различия между платформами

В этом разделе описываются различия платформы с API карт.

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