1. 程式人生 > >Unity內部類實現GPS定位

Unity內部類實現GPS定位

使用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>

測試結果: