Xamarin.Essentials:マップ

Map クラスを使用すると、アプリケーションによってインストールされているマップ アプリケーションを使用して、特定の場所または placemark を開くことができます。

作業開始

この 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 への参照が既にある場合は、省略可能な MapLaunchOptions と共に組み込みの拡張メソッド OpenMapAsync を使用することができます。

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

ルート案内

MapLaunchOptions なしで OpenMapAsync を呼び出した場合、指定した場所でマップが起動します。 必要に応じて、デバイスの現在位置から計算されるナビゲーション ルートを取得することができます。 これは、MapLaunchOptionsNavigationMode を設定することによって行います。

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 では、URI スキーム geo: を使用してデバイス上のマップ アプリケーションを起動します。 これにより、この URI スキームをサポートしている既存のアプリから選択するよう、ユーザーが求められる場合があります。 Xamarin.Essentials は、このスキームをサポートしている Google マップを使用してテストされます。

API

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。