夜風のMixedReality

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

MapSDK for Untiyを学ぶ 任意のスクリプトで現在のマップの座標を取得する

本日はMapSDK の勉強枠です。

とても簡単なことでしたが30分ほど沼にハマってしまったので記事にします。

〇任意のスクリプトで現在のマップの座標を取得する

MapSDKでは[MapRenderer]コンポーネントのLocationに任意の座標を入力することでその場所のマップデータを表示してくれます。

スクリプトで実行中に座標を代入する場合は以下のようにMapScene()を使用することでマップの座標を更新することができます。

MapRenderer _rendere.MapScene(new MapSceneOfLocationAndZoomLevel(LatLon latlon,float ZoomLevel));

今回は逆に現在表示している座標を取得します。

スクリプト

今回は以下のようなスクリプトを作成しました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.Maps.Unity;
using Microsoft.Geospatial;
using Microsoft.MixedReality.Toolkit.Rendering;

public class WeatherDataGeter : MonoBehaviour
{ 
    LatLon latLon;
    MapRendererBase renderer;

    // Start is called before the first frame update
    void Start()
    {
        renderer = this.GetComponent<MapRendererBase>();
        latLon = renderer.Center;
        Debug.Log(latLon);
    }
}

[MapRenderer]コンポーネントでは[Location]というブロックの中に[Latitude],[Longitude]を入力しますが、このLatLon(緯度経度)データは以下のように取り出します。

LatLon MapRenderer.Center

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

これによってLatLon型で現在の緯度経度が返されます。

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

〇応用

LatLon型は緯度経度の二つの引数をもった型ですが、その値はFloat型ではなくdouble型になっています。

そのため取得した緯度経度をvector2などで扱う場合変換が必要になります。

型を変換する際は以下のように処理を行います。

 float _number = (float)_doubleNumber

これでvector2型としても座標を取り出すことができました。

public vector2 Locationなどでinspector上で見れるようにすることでも確認することができます。

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

以上でMapSDK for Unityで任意のスクリプトで現在の地図の座標を取得することができました。