前言
提示:要实现实时获取天气情况
提示:以下是本篇文章正文内容,下面案例可供参考
一、判断所在地区
示例:问:如果没有网络怎么办?答:。。。
1.通过百度地图api获取返回的json
IEnumerator LoadHttpJson()
{
UnityWebRequest request = UnityWebRequest.Get(Posurl);
yield return request.SendWebRequest();
string str = request.downloadHandler.text;
//File.WriteAllText(@"D:\weather\weather.josn", str);
Debug.Log("返回信息:" + str);
if (string.IsNullOrEmpty(request.error))
{
positionTool.ResponseBody t = LitJson.JsonMapper.ToObject<positionTool.ResponseBody>(str);
Debug.Log("所在地信息:" + t.content.address_detail.city);
//获取天气
//StartCoroutine(RequestWeather(weatherTool.GetWeatherId(t.content.address_detail.city)));
}
}
2.还可以通过获取本地公网ip,再查询ip所在地获取,获取到地址后,在本地json数据中对应找出编号
二、根据所在地编号获取信息
代码如下(示例):
IEnumerator RequestWeather(int id)
{
Debug.Log("所在地编号:" + id);
UnityWebRequest request = UnityWebRequest.Get(Weatherurl + id.ToString());
yield return request.SendWebRequest();
string str = request.downloadHandler.text;
if (string.IsNullOrEmpty(request.error))
{
Debug.Log(str);
weatherTool.WeathBody t = LitJson.JsonMapper.ToObject<weatherTool.WeathBody>(str);
Debug.Log(t.data.forecast[0].type);
}
}
总结
根据具体的返回文件来编写读取类。大概就是记录下自己的想法
具体请看:https://blog.csdn.net/SnoopyNa2Co3/article/details/89853201
(这一篇里提到的请求网站是免费,但好像没有精确到区一级,和风天气(免费版)精确到区级但获取信息没有这个多,具体看个人需求吧。)
注意:最好做好缓存,不要频繁请求,可能会被封ip。
还有什么收费的,免费的获取天气的网站请看:https://www.jianshu.com/p/e3e04cf3fc0f