unity接入高德地图API
一. unity用高德获取天气
1.0 注册开发者账号
1.1 第一步先去高德地图开发者平台地址:https://lbs.amap.com/
1.2 登陆之后,创建应用
1.3然后创建应用
1.4 选择web服务之后就有了
1.5 key就是申请的密钥之后代码会用的到
1.6 下面是获取天气代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class GetWeather : MonoBehaviour
{
/// <summary>
/// 密钥 于高德开发者平台创建应用申请获得
/// </summary>
private const string key = "key";
private void Start()
{
Get("320100", GetDataType.Lives, data => { });
}
public enum GetDataType
{
/// <summary>
/// 获取实况天气
/// </summary>
Lives,
/// <summary>
/// 获取预报天气
/// </summary>
Forecast
}
/// <summary>
/// 获取天气数据
/// </summary>
/// <param name="city">城市编码</param>
/// <param name="callback">回调函数</param>
public void Get(string city, GetDataType type, Action<string> callback)
{
StartCoroutine(SendWebRequest(city, type, callback));
}
private IEnumerator SendWebRequest(string city, GetDataType type, Action<string> callback)
{
//url拼接
string url = string.Format("https://restapi.amap.com/v3/weather/weatherInfo?key={0}&city={1}&extensions={2}", key, city, type == GetDataType.Lives ? "base" : "all");
//GET方式调用API服务
using (UnityWebRequest request = UnityWebRequest.Get(url))
{
DateTime beginTime = DateTime.Now;
yield return request.SendWebRequest();
DateTime endTime = DateTime.Now;
if (request.result == UnityWebRequest.Result.Success)
{
Debug.Log($"{beginTime} 发起网络请求 于 {endTime} 收到响应:\r\n{request.downloadHandler.text}");
callback.Invoke(request.downloadHandler.text);
}
else
{
Debug.Log($"发起网络请求失败:{request.error}");
}
}
}
}
1.7 脚本随便挂一个地方运行测试即可
二. unity用高德获取当前位置
2.1 当前位置打印如下图
2.2 里面有经纬度,省份,城市编码…
2.3 获取当前位置的代码如下
using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class GetUrl : MonoBehaviour
{
public static string mykey = "你自己的key";
private string urldingwei= "https://restapi.amap.com/v3/ip?key=7fc469b5bf1646dbee4ff55c7b07f35e";
private string urlJingTaiDiTu = "https://restapi.amap.com/v3/staticmap?zoom=15&size=500*500&paths=10,0x0000ff,1,,:116.31604,39.96491;116.320816,39.966606;116.321785,39.966827;116.32361,39.966957&key=你自己的key";
// Start is called before the first frame update
void Start()
{
StartCoroutine(PostRequest_GET(urldingwei,data=> { }));
}
IEnumerator PostRequest_GET(string urll, Action<string> callback)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(urll))
{
// 发送请求
yield return webRequest.SendWebRequest();
// 检查是否有错误
if (webRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError("Error: " + webRequest.error);
Debug.Log(webRequest.responseCode);
}
else
{
// 请求成功,处理响应数据
Debug.Log(webRequest.responseCode);
Debug.Log("Response: " + webRequest.downloadHandler.text);
//postDatas = webRequest.downloadHandler.text;
callback.Invoke(webRequest.downloadHandler.text);
Root root = JsonMapper.ToObject<Root>(webRequest.downloadHandler.text);
//GetJsonData_HuiYiShi(root.data);
}
}
}
private WWW Loadab;
public IEnumerator LoadWWW(string path)
{
Loadab = new WWW(path); //GloData.ABAdress=Application.streamingAssetsPath; 路径可以根据自己需求来修改
yield return Loadab;
if (Loadab.error != null)
{
Debug.Log(Loadab.error);
}
else
{
string oko = Loadab.text;
Debug.Log(oko);
}
}
}
public enum output
{
JSON,XML
}
public class Root
{
/// <summary>
///
/// </summary>
public string status { get; set; }
/// <summary>
///
/// </summary>
public string info { get; set; }
/// <summary>
///
/// </summary>
public string infocode { get; set; }
/// <summary>
/// 江苏省
/// </summary>
public string province { get; set; }
/// <summary>
/// 南京市
/// </summary>
public string city { get; set; }
/// <summary>
///
/// </summary>
public string adcode { get; set; }
/// <summary>
///
/// </summary>
public string rectangle { get; set; }
}
本次就这么多了,感谢观看!!!