夜風のMixedReality

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

iPhoneでMicrosoft MapsSKD for Unityを動かす

本日はMaps SDK枠です。

Microsoft MapsSDK forUnity(Maps SKD)とは?

Microsfot Maps SDK for UnityはBingMapの利用してUnityアプリケーション内で地図情報を扱うことができるOSSパッケージ及び、そこで提供されるBingMapのAPIを指します。

筆者自身も以前にコントリビュートしたことがあり、非常に気に入っているパッケージですが、ここ一年触っていなかったためiPhoneでの動作確認を行います。

〇環境

Mac Mini(M2)

・Unity2022.3.5f1

APIキーの取得

MapsSDKを使用するためにはBingのDeveloperサイトからBingMapのキーを取得する必要があります。

①Bing maps Dev Centerにアクセスします。

www.bingmapsportal.com

②サインインを行います。

③My AccountからMy Keysへアクセスします。

ここでは自身のアプリケーションで使用されるAPIキーを一括管理できます。

なお、APIキーは有効期限があります。 以下の例では筆者の有効期限が切れたAPIですが、長期運用する際はUpdateする必要がある点に注意が必要です。

新しいキーを作成して保存します。

〇プロジェクトの作成とMaps SDKのパッケージの導入

今回はiPhone用のARシーンをもとに作成していきます。こちらのシーンについては過去の記事を参照にしてください。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

①Finder(エクスプローラー)でUnityプロジェクトのPackageフォルダを開きmanifest.json内のファイルを書き換えます。

{
  "scopedRegistries": [
    {
      "name": "Maps SDK for Unity",
      "url": "https://unity.virtualearth.net/npm/registry/",
      "scopes": [
        "com.microsoft.maps"
      ]
    }
  ],
  "dependencies": {
    "com.microsoft.maps.unity": "0.11.2",

 ・・・ほかのパッケージ・・・

②Unityのプロジェクトを立ち上げます。

初回起動時のみ画像のようなポップアップが表示されます。

こちらは確認の画面のため特に問題ない場合は閉じてしまって大丈夫です。

以上でMapsSKD for Unityの導入が完了します。

〇シーンの構成とビルド

①からオブジェクトを作成します。ここではMapsという名前をつけています。

MapRendererコンポーネントを追加します。 

これによって依存関係にある他のコンポーネントがアタッチされます。

次にAPIキーを入力します。 Microsoft MapsSDK for Unityでは直接入力する方法と外部ファイルから読み込む方法の2つがあります。

後者の場合Gitなどで公開する際にファイル単位でignoreできるためセキュリティ上の利点がありチーム開発などに向いています。

しかし今回はプライベートで使用するアプリのためシーンに埋め込みます。

Developer Key SceneSceneにします。

Developer KeyAPIキーを入力します。

これによって地図が表示されるようになります。

URPの場合はマテリアルを設定する必要があります。

⑤manifest.jsonの依存関係に次を加えます。

 "com.microsoft.maps.unity.urp": "https://github.com/microsoft/MapsSDK-Unity.git?path=/UPM/com.microsoft.maps.unity.urp",

MapRendereコンポーネントUse Custom Terrain Materialをチェックを入れ有効化しPackages/com.microsoft.maps.unity.urp/Runtime/Resources/Materials/UnlitTerrainMaterial-URP-MapsSDK.matのマテリアルを追加します。

これによってマップのシェーダーエラーが解消されます。

⑦同様にUse Custom Clipping Volume MaterialPackages/com.microsoft.maps.unity.urp/Runtime/Resources/Materials/ClippingVolumeMaterial-URP-MapsSDK.matのマテリアルを指定することでふちのシェーダーエラーが解消します。

MapRendererコンポーネントLatatude,Longtudeに緯度経度、ZoomLevelに拡大率を指定します。

これによって都市のマップが表示されます。

以前は東京の地図も立体的に対応していたのですが23年末時点で東京都内の3D立体表示が確認できなくなっております。

以上でプロジェクトの設定が完了しました。

iPhoneで通信を行うためにはinfo.plistというファイルを編集する必要があるようです。

こちらに関しては筆者の理解が浅いので別記事で行っていきます。

本日は以上です。