最近项目需要定位,所以开始来研究Unity的定位,本来想用原生的sdk,但是谷歌被墙了那就没有办法了,接第三方的sdk又太麻烦,百度了一下正好可以通过百度地图API来获取当前IP的地址,不仅是百度地图,同时高德地图,腾讯地图等等也都有类似的API,此次我选择了百度地图,于是在查询了百度地图的相关接口后研究出功能,自学记录一下
代码贴出:
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Net.NetworkInformation;
public class BaiduTest : MonoBehaviour {
public Text province;
public Text city;
string url = "http://api.map.baidu.com/location/ip?ak=bretF4dm6W5gqjQAXuvP0NXW6FeesRXb&coor=bd09ll";
string text;
void Start()
{
StartCoroutine(Request());
}
// Update is called once per frame
void Update()
{
}
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("夭寿啦,调到地址啦!!!!!!");
Debug.Log(req.content.address_detail.city);
province.text = req.content.address_detail.province;
city.text = req.content.address_detail.city;
}
}
}
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解析,刚好有现成的插件,导入进去运行成功,不过稍有遗憾的是,我只定位到了省份和城市,不知道是不是IP的问题,通过此API调用IP地址的话精度不是太高,如果需要精度很高的定位的话,建议还是安装第三方SDK,调用的网址是"http://api.map.baidu.com/location/ip?ak=bretF4dm6W5gqjQAXuvP0NXW6FeesRXb&coor=bd09ll"; 需要替换自己的AK的话将其中的bretF4dm6W5gqjQAXuvP0NXW6FeesRXb替换成自己的就可以了,具体调用百度地图API有详细解释,在这里就不多做介绍了,下面是我的工程文件,unity版本为5.3.6,在Editro和Android环境下都可以正常运行调用,里面还有些获取IP和调用安卓的代码,再次就不做介绍了。
放一下工程文件的链接: https://download.csdn.net/download/abc1090275833/10586792