夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Microsoft Map-SDK for Unity その4 MapPinExample

本日はツールの調査枠です。

MicrosoftからはMixedRealityToolkit以外にも多くの開発者向けのSDKが公開されています。

 その一例として[Microsoft Map-SDK for Unity(以下Map-SDK)]を調査しています。

 第一回ではMap-SDKを導入しました。

redhologerbera.hatenablog.com

 第二回からExamplesを読み解いています。

〇Exampleを読み解く

Map-SDKにはExamplesとしてサンプルシーンが同梱されており、Map-SDKを用いたデモを体験できます。

f:id:Holomoto-Sumire:20200830164000j:plain

各シーンごとに[Map]オブジェクト内の[Map Session]コンポーネントの[Developer Key]を入力する必要があります。

この[Developer Key]はその1の導入の記事で紹介しています。

redhologerbera.hatenablog.com

前回の記事では[City Tour]を見ていきました。

redhologerbera.hatenablog.com

[City Tour]では立体的なマップを使ってシアトルの各所を巡る旅を体験できます。

その2では[HubExample]を見ていきました。

redhologerbera.hatenablog.com

[HubExample]では航空写真と地図の表示の切り替え、気象データの表示、ジェスチャーを用いての地図のスクロールを見ることができます。

今回は[MapPinExample]を調査します。

〇MapPinExample

このシーンでは、カリフォルニアの魚に関する5,363点のデータセットを使用して、水域にある魚の回遊を制御するすべてのバリアーの位置を表示しています。

f:id:Holomoto-Sumire:20200901181833j:plain

地図上にピン付けされてデータが表示されています。 AirTapで任意のピンを選択するとピン付近の地域へズームします。

f:id:Holomoto-Sumire:20200905100849g:plain

地図上にはデータのピンだけではなく、川や入り江の名称が四角形のピンとして表示されます。

どちらのピンも地図上の緯度と経度に依存しており、地図とともに移動します。

f:id:Holomoto-Sumire:20200905101131g:plain

マップ上のピンは[MapPinLayer]コンポーネントによって実現されています。 このコンポーネントはマップの現在のビュー内の[MapPins]またはクラスタを取得するために[MapRenderer] から照会され、表示されるすべての MapPinは、[MapPinLayer(Clone)] として[MapRenderer]のオブジェクトの子オブジェクトとして生成されます。

f:id:Holomoto-Sumire:20200905102355j:plain

ピンに相当する[SmallMapPin]を指定しているのが[MapPinProvider]コンポーネントです。

f:id:Holomoto-Sumire:20200905103505j:plain

[MapPinProvider]の[MapPinLayer]には[MapPinLayer]コンポーネントをアタッチします。

[MapPinPrefab]には表示するピンのプレファブを指定します。

[MapPinLocationsCsv]にはcsvファイルを指定します。 csvファイルの中身には[緯度],[経度],[地名],[数値データ]が記述されます。

f:id:Holomoto-Sumire:20200905104110j:plain

これがピンの位置と表示されるデータになります。

[hierarchy]ウィンドウにはすべてのピンが配置され、地図上でレンダリングされている場所のピンのみアクティブな状態になっています。

f:id:Holomoto-Sumire:20200905102746j:plain

ピンには[MapPin]コンポーネント[AlignToMap]コンポーネント、[ZoomToClusterMapPin]コンポーネントがアタッチされています。

f:id:Holomoto-Sumire:20200905110035j:plain

[AlignToMap]コンポーネントは[Map]オブジェクトをシーンから取得しトランスフォームを自身のトランスフォームと同期させます。

[ZoomToClusterMapPin]コンポーネントはAirTapするとsee cref="ClusterMapPin"で指定されている向きにズーム、移動します。

以上がMapPinExampleでした。