1. 程式人生 > >Unity獲取當前所在城市及GPS資訊

Unity獲取當前所在城市及GPS資訊

先宣告一點,此部落格可能不能滿足大部分人的需求,當本人只是記錄一下有這樣的一種方法。

僅限於需要獲取當前ip所屬城市,及城市的經緯度資訊。

實現過程並不難。

主要是依據於百度的一個api介面

 string url = "http://api.map.baidu.com/location/ip?ak=bretF4dm6W5gqjQAXuvP0NXW6FeesRXb&coor=bd09ll";
    void Start()
    {
        StartCoroutine(Request());
    }
       
    IEnumerator Request()
    {
        WWW www = new WWW(url);
        yield return www;

        if (string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.text);
        ResponseBody req = JsonConvert.DeserializeObject<ResponseBody>( www.text);
        Debug.Log(req.content.address_detail.city +" X: "+ req.content.point.x +" Y: "+ req.content.point.x);
    }
    }

而這個介面以網址的形式載入,載入成功後會返回一段json資料


這時候就需要用到json的解析工具了,反解析為固定的模式。而這個模式好像是百度api介面已經定好的,這裡我們用Newtonsoft.Json。

類的固定格式如下

public class ResponseBody
{

    public string address;
    public Content content;
    public int status;

}

public class Content
{
    public string address;
    public Address_Detail address_detail;
    public Point point;
}
public class Address_Detail
{
    public string city;
    public int city_code;
    public string district;
    public string province;
    public string street;
    public string street_number;
    public Address_Detail(string city, int city_code, string district, string province, string street, string street_number)
    {
        this.city = city;
        this.city_code = city_code;
        this.district = district;
        this.province = province;
        this.street = street;
        this.street_number = street_number;
    }
}
public class Point
{
    public string x;
    public string y;
    public Point(string x, string y)
    {
        this.x = x;
        this.y = y;
    }
}

載入後的資料經過解析後


json的解析工具,以及原始碼地址https://download.csdn.net/download/qq_37310110/10343954