我在使用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);
}
}
}
}
这里总是过不去,请问这是为什么,怎么解决呢