はじめに
HoloLens2で位置情報(WiFi)を取得してみました。
UWPの公式ドキュメントはこちら
Get the user's location
ドキュメントに書いてあるサンプルのMapControlは参考にならない
MapControl
MapControl C# Sample #WindowsUniversalSamples pic.twitter.com/ZXhIdoalDe
— がちもとさん@熊本 (@sotongshi) June 13, 2021
ドキュメントのコードが書かれているのはこっち↓↓↓
Geolocation
Geolocation C# Sample #WindowsUniversalSamples pic.twitter.com/2CuB9imPMi
— がちもとさん@熊本 (@sotongshi) June 13, 2021
参考までに
WindowsでGPS(みちびき含む)から現在の座標を調べてみる
PowerAppsでも取得できる
PowerAppsの信号(Signals)を試してみた
開発環境
- 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のテキストを配置。
2.MapControlオブジェクトでAddComponent、MapController.csを作成。TextMeshProのテキストをMapControlのDebugTextにアタッチ。
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のプライバシーの設定からアプリの位置情報をオンにする。
実行
HoloLens2で緯度・経度取れた。#HoloLens2 pic.twitter.com/g3aatLF0qm
— がちもとさん@熊本 (@sotongshi) June 13, 2021
お疲れ様でした。