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
を呼び出した場合、指定した場所でマップが起動します。 必要に応じて、デバイスの現在位置から計算されるナビゲーション ルートを取得することができます。 これは、MapLaunchOptions
の NavigationMode
を設定することによって行います。
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);
}
}
プラットフォームによる違い
プラットフォームの実装の詳細
Android では、URI スキーム geo:
を使用してデバイス上のマップ アプリケーションを起動します。 これにより、この URI スキームをサポートしている既存のアプリから選択するよう、ユーザーが求められる場合があります。 Xamarin.Essentials は、このスキームをサポートしている Google マップを使用してテストされます。