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项目 点一个⭐ ο(=•ω<=)ρ⌒☆

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Coco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值