「デスクトップ地図アプリ開発」シリーズの第3弾の記事です。
第3弾では、第2弾で作成した Visual Studio プロジェクトに第1弾で作成した Web マップを表示する機能を実装します。
マップ表示の実装
第2弾で作成した Visual Studio プロジェクトに Web マップを表示する機能を実装していきます。本記事で紹介する機能のサンプル コードは Esriジャパン GitHub でも公開しています。
1. MapViewModel.cs の MapViewModel() を下記のように置き換えます。
MapViewModel.cs
public MapViewModel()
{
_ = SetupMap();
}
2. MapViewModel クラスに SetupMap 関数を追加します。PortalItem.CreateAsync() メソッドの引数には、Web マップの ID を指定します。ここでは、サンプルの Web マップの ID を指定していますが、ご自身で Web マップを作成した場合は、ID を置き換えてください。
MapViewModel.cs
private async Task SetupMap()
{
// Web マップの ID を使用してマップを取得する
ArcGISPortal portal = await ArcGISPortal.CreateAsync();
PortalItem mapItem = await PortalItem.CreateAsync(portal, "3bf36dae4cc545c8956a521fa9ada1eb");
// MapView の Map プロパティに Web マップを割り当てる
Map = new Map(mapItem);
// マップをロードする
await Map.LoadAsync();
}
3. ArcGIS Platform のベースマップやジオコード サービス(今後のステップで使用)にアクセスするために API キーを設定する必要があります。API キーの役割及び API キーの作成方法については、「API キーの取得」をご参照ください。
App.xaml.cs
ArcGISRuntimeEnvironment.Initialize(config => config
// .UseLicense("[Your ArcGIS Maps SDK License key]")
.UseApiKey("[ここに取得した API キーを設定]")
.ConfigureAuthentication(auth => auth
.UseDefaultChallengeHandler() // Use the default authentication dialog
4. アプリを実行して、マップが表示されるか確認します。この時点では、ベースマップの地名ラベルが英語で表示されています。
5. 次のコードを使用して、ベースマップの地名ラベルをローカライズする処理を追加します。BasemapStyleParameters を使用することで、ベースマップの地名ラベルを指定した特定の言語や、アプリを実行する OS のロケールの言語で表示することができます。
MapViewModel.cs
Map = new Map(mapItem);
// ベースマップ スタイルのパラメーターを作成する
var basemapStyleParameters = new BasemapStyleParameters()
{
// ベースマップの地名ラベルを OS のロケールの言語で表示する
LanguageStrategy = BasemapStyleLanguageStrategy.ApplicationLocale
};
// ベースマップのタイプ(ArcGISTopographic:地形図)とベースマップ スタイルのパラメーターを指定して、新しい Basemap オブジェクトを作成する
var localizedBasemap = new Basemap(BasemapStyle.ArcGISTopographic, basemapStyleParameters);
// Map の Basemap オブジェクトを新しく作成した Basemap オブジェクトに置き換える
Map.Basemap = localizedBasemap;
await Map.LoadAsync();
6. 再度アプリを実行して、マップが表示されるか確認します。ベースマップの地名ラベルが日本語(アプリを実行する OS のロケールの言語)で表示されています。
Tips:ベースマップのタイプ(BasemapStyle)は、地形図(ArcGISTopographic)の他にも、道路地図(ArcGISStreets)、衛星画像(ArcGISImagery)、OpenStreetMap(OSMStandard)なども使用できます。
第3弾「マップ表示」では Web マップを表示する方法を紹介してきました。次回、第4弾ではマップ操作機能の実装方法を紹介します。
関連リンク