一个小菜汪 2023-04-21 21:46 采纳率: 47.1%
浏览 20

Unity获取不到位置信息

我在使用Unity获取经纬度信息,启动定位的时候的时候,使用代码


if (!Input.location.isEnabledByUser)
        {
            txt.text = "位置服务不可用";
            yield break;
        }

以下是我的全部代码:

using System;
using UnityEngine;
using System.Collections;
using System.IO;
using System.Net;
using System.Text;
using LitJson;
using UnityEngine.Networking;
using UnityEngine.UI;

public class GPSManager : MonoBehaviour
{

    public Text txt;
    public Text AddressText;
    private string longitude;//经度
    private string latitude;//纬度

  

    void Start()
    {
        StartCoroutine(StartGPS());
    }

    [Obsolete]
    IEnumerator StartGPS()
    {
        txt.text = "开始获取GPS信息";

        yield return new WaitForSeconds(3);
        // 检查位置服务是否可用  
        if (!Input.location.isEnabledByUser)
        {
            txt.text = "位置服务不可用";
            yield break;
        }

        // 查询位置之前先开启位置服务  
        txt.text = "启动位置服务";
        Input.location.Start();

        // 等待服务初始化  
        int maxWait = 20;
        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
            txt.text = Input.location.status.ToString() + ">>>" + maxWait.ToString();
            yield return new WaitForSeconds(1);
            maxWait--;
        }

        // 服务初始化超时  
        if (maxWait < 1)
        {
            txt.text = "服务初始化超时";
            yield break;
        }

        // 连接失败  
        if (Input.location.status == LocationServiceStatus.Failed)
        {
            txt.text = "无法确定设备位置";
            yield break;
        }
        else
        {
            txt.text = "Location: rn" +
                       "纬度:" + Input.location.lastData.latitude + "rn" +
                       "经度:" + Input.location.lastData.longitude + "rn" +
                       "海拔:" + Input.location.lastData.altitude + "rn" +
                       "水平精度:" + Input.location.lastData.horizontalAccuracy + "rn" +
                       "垂直精度:" + Input.location.lastData.verticalAccuracy + "rn" +
                       "时间戳:" + Input.location.lastData.timestamp;

            longitude = Input.location.lastData.longitude.ToString();
            latitude = Input.location.lastData.latitude.ToString();

            StartCoroutine(GetRequest(
                "http://restapi.amap.com/v3/geocode/regeo?key=6bda73179a87a92394489045b32a0f46&location="+longitude+","+latitude));
        }

        // 停止服务,如果没必要继续更新位置,(为了省电)  
        Input.location.Stop();
    }

     string key = "6bda73179a87a92394489045b32a0f46";       //去高德地图开发者申请

    [Obsolete]
    IEnumerator GetRequest(string uri)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
        {
            // Request and wait for the desired page.
            yield return webRequest.SendWebRequest();

            string[] pages = uri.Split('/');
            int page = pages.Length - 1;

            if (webRequest.isNetworkError)
            {
               // Debug.Log(pages[page] + ": Error: " + webRequest.error);
            }
            else
            {
               JsonData jd=JsonMapper.ToObject(webRequest.downloadHandler.text);
              AddressText.text=jd["regeocode"]["formatted_address"].ToString();
                // Debug.Log(pages[page] + ":\nReceived: " + webRequest.downloadHandler.text);
            }
        }
    }
}

这里总是过不去,请问这是为什么,怎么解决呢

img

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 4月21日

悬赏问题

  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致