HoloLens2で位置情報（WiFi）を取得する

# はじめに
HoloLens2で位置情報（WiFi）を取得してみました。

UWPの公式ドキュメントはこちら
[Get the user's location](https://docs.microsoft.com/en-us/windows/uwp/maps-and-location/get-location)

ドキュメントに書いてあるサンプルのMapControlは参考にならない
[MapControl](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MapControl)

<blockquote class="twitter-tweet"><p lang="ht" dir="ltr">MapControl C# Sample <a href="https://twitter.com/hashtag/WindowsUniversalSamples?src=hash&amp;ref_src=twsrc%5Etfw">#WindowsUniversalSamples</a> <a href="https://t.co/ZXhIdoalDe">pic.twitter.com/ZXhIdoalDe</a></p>&mdash; がちもとさん@熊本 (@sotongshi) <a href="https://twitter.com/sotongshi/status/1404025637870788608?ref_src=twsrc%5Etfw">June 13, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


***ドキュメントのコードが書かれているのはこっち↓↓↓***
[Geolocation](https://github.com/microsoft/Windows-universal-samples/blob/master/Samples/Geolocation/cs/GeolocationCS/Scenario2_GetPosition.xaml.cs)

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Geolocation C# Sample <a href="https://twitter.com/hashtag/WindowsUniversalSamples?src=hash&amp;ref_src=twsrc%5Etfw">#WindowsUniversalSamples</a> <a href="https://t.co/2CuB9imPMi">pic.twitter.com/2CuB9imPMi</a></p>&mdash; がちもとさん@熊本 (@sotongshi) <a href="https://twitter.com/sotongshi/status/1404129353928085511?ref_src=twsrc%5Etfw">June 13, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

参考までに
[WindowsでGPS(みちびき含む)から現在の座標を調べてみる](http://blog.kumoto.jp/2019/02/20/win_geolocation_api/)

PowerAppsでも取得できる
[PowerAppsの信号(Signals)を試してみた](https://blog.hololab.co.jp/entry/2020/07/26/150016)

# 開発環境
- Windows10 PC
- Unity 2019.4.1f1
- MRTK 2.7.0（Microsoft.MixedReality.Toolkit.Unity.Foundation.2.7.0.unitypackage）

# 導入

1．Unityで新規プロジェクト作成。MRTKの設定、MapControlオブジェクト作成。位置情報を表示するため、MainCameraの下にTextMeshProのテキストを配置。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/87cd2f73-0002-dee9-2254-5cdc3e2fe5b2.png)

2．MapControlオブジェクトでAddComponent、MapController.csを作成。TextMeshProのテキストをMapControlのDebugTextにアタッチ。

~~~MapController.cs
using System.Collections;
using System.Collections.Generic;
using System;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;
#if UNITY_WSA && !UNITY_EDITOR
using Windows.Devices.Geolocation;
#endif
using TMPro;

public class MapController : MonoBehaviour
{
    public TextMeshProUGUI debugText;
    private uint _desireAccuracyInMetersValue = 0;

    // Start is called before the first frame update
    async void Start()
    {
        debugText.text = "Initialization.";

#if UNITY_WSA && !UNITY_EDITOR
        var accessStatus = await Geolocator.RequestAccessAsync();
        switch (accessStatus)
        {
            case GeolocationAccessStatus.Allowed:
                debugText.text = "Waiting for update...";
                Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = _desireAccuracyInMetersValue };
                Geoposition pos = await geolocator.GetGeopositionAsync();
                UpdateLocationData(pos);
                break;

            case GeolocationAccessStatus.Denied:
                debugText.text = "Access to location is denied.";
                break;

            case GeolocationAccessStatus.Unspecified:
                debugText.text = "Unspecified error.";
                UpdateLocationData(null);
                break;
        }
#endif
    }

#if UNITY_WSA && !UNITY_EDITOR
    private void UpdateLocationData(Geoposition position)
    {
        if (position == null)
        {
            debugText.text = "No data";
        }
        else
        {
            debugText.text = position.Coordinate.Point.Position.Latitude.ToString() + "\n" + position.Coordinate.Point.Position.Longitude.ToString();
        }
    }
#endif
}
~~~

3．Player SettingsのLocationにチェックを入れるのを忘れずに。HoloLens2のプライバシーの設定からアプリの位置情報をオンにする。

# 実行
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">HoloLens2で緯度・経度取れた。<a href="https://twitter.com/hashtag/HoloLens2?src=hash&amp;ref_src=twsrc%5Etfw">#HoloLens2</a> <a href="https://t.co/g3aatLF0qm">pic.twitter.com/g3aatLF0qm</a></p>&mdash; がちもとさん@熊本 (@sotongshi) <a href="https://twitter.com/sotongshi/status/1404056881635618820?ref_src=twsrc%5Etfw">June 13, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

お疲れ様でした。