使用Unity提供的内部方法实现GPS定位
代码如下:
方法比较少也比较简单,注释很详细
将脚本拖拽到摄像机上,打包,在Android或iOS真机上测试
<span style="font-size:14px;">using UnityEngine;
using System.Collections;
public class GPS : MonoBehaviour {
private LocationService locationServer;
private LocationServiceStatus locationServerStatus;
private LocationInfo locationInfo;
private bool isCould; //是否开启定位服务,即开启GPS定位
private float altitude; //海拔高度
private float horizontalAccuracy; //水平精度
private float verticalAccuracy; //垂直精度
private float latitude; //纬度
private float longitude; //经度
private double timestamp; //最近一次定位的时间戳,从 1970年开始
// Use this for initialization
void Start () {
locationServer = Input.location;
isCould = locationServer.isEnabledByUser; //用户是否可以设置定位服务
locationServerStatus = locationServer.status; //返回设备服务状态
//参数1 服务所需的精度,以米为单位,参数2 最小更新距离
locationServer.Start(1, 1);//开始位置更新服务,最后的位置坐标
//locationServer.Stop();//停止位置服务更新,节省电池寿命
}
void Update()
{
//调用该方法之前确保调用了 Input.location.Start()
locationInfo = locationServer.lastData; //设备最后检测的位置
altitude = locationInfo.altitude;//设备高度
horizontalAccuracy = locationInfo.horizontalAccuracy; //水平精确度
verticalAccuracy = locationInfo.verticalAccuracy; //垂直精确度
latitude = locationInfo.latitude; //设备纬度
longitude = locationInfo.longitude;//设备纬度
timestamp = locationInfo.timestamp;//时间戳(自1970年以来以秒为单位)位置时最后一次更新。
}
void OnGUI () {
GUI.skin.label.fontSize = 40;
GUI.Label(new Rect(50, 0, 500, 80), "isCould : " + isCould);
GUI.Label(new Rect(50, 100, 800, 80), "locationInfo : " + locationInfo);
GUI.Label(new Rect(50, 200, 500, 80), "海拔 : " + altitude);
GUI.Label(new Rect(50, 300, 500, 80), "水平精度 : " + horizontalAccuracy);
GUI.Label(new Rect(50, 400, 500, 80), "垂直经度 : " + verticalAccuracy);
GUI.Label(new Rect(50, 500, 500, 80), "纬度 : " + latitude);
GUI.Label(new Rect(50, 600, 500, 80), "经度 : " + longitude);
GUI.Label(new Rect(50, 700, 500, 80), "时间戳 : " + timestamp);
}
}
</span>
测试结果: