Hololens2开发笔记-获取经纬度位置信息(unity)

环境

  • Hololen2
  • Windows 10
  • Unity 2019.4.19f1c1
  • Visual Studio 2019
  • MRTK 2.5.4

相关代码

using System.Collections;
using TMPro;
using UnityEngine;

public class LocationService : MonoBehaviour
{
    
    

    public TextMeshPro textMeshPro;
    private bool locationAvailable = false;

    private void Start()
    {
    
    
        StartGPS()
    }

    public void StartGPS()
    {
    
    
        StartCoroutine(EnableGPS());
    }

    IEnumerator EnableGPS()
    {
    
    
        if (!Input.location.isEnabledByUser)
        {
    
    
            Debug.Log("User location info is disabled");
            yield break; 
        }

        Input.location.Start(10.0f, 10.0f);// 启动定位服务
        int maxWait = 20;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
    
    
            // 暂停协同程序的执行(1秒)  
            yield return new WaitForSeconds(1);
            maxWait--;
        }

        if (maxWait < 1)
        {
    
    
            Debug.Log("Init GPS service time out");
            yield break;
        }

        if (Input.location.status == LocationServiceStatus.Failed)
        {
    
    
            Debug.Log("Unable to determine device location");
            yield break;
        }
        else
        {
    
    
            SceneManager.Instance.PrintMessage("Enable Location Service Success"); // 自定义组件
            locationAvailable = true;
            StartCoroutine(GetLocationInfo());
        }
    }

    IEnumerator GetLocationInfo()
    {
    
    
        while (locationAvailable)
        {
    
    
            // 0.5秒更新一次
            yield return new WaitForSeconds(0.5f);
            if (textMeshPro != null)
            {
    
    
                textMeshPro.text = "";
                textMeshPro.text += $"Lng: {Input.location.lastData.longitude}\n";
                textMeshPro.text += $"Lat: {Input.location.lastData.latitude}\n";
                textMeshPro.text += $"Alt: {Input.location.lastData.altitude}\n";
                textMeshPro.text += $"HAcc: {Input.location.lastData.horizontalAccuracy}\n";
            }
        }
    }

    public void StopGPS()
    {
    
    
        locationAvailable = false;
        Input.location.Stop();
        SceneManager.Instance.PrintMessage("Close GPS"); // 自定义组件
    }
}

效果展示

图片可能因为网络原因掉线了,请刷新或直接点我查看图片~

注意事项

注意打包 untiy 程序时要设置允许 Location 权限,前面那个捕获照片的也要设置允许 webcam 权限。

如果这篇文章对您有帮助,欢迎给我的 github项目 点一个⭐ ο(=•ω<=)ρ⌒☆

猜你喜欢

转载自blog.csdn.net/Apple_Coco/article/details/113855338
今日推荐