unity接入高德地图API
👉前言
有时候会用到天气的系统,本篇使用高德API开发,方便使用,简单记录一下,不喜勿喷哦,
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
有问题 欢迎点赞评论哦.
下面就让我们进入正文吧 !
👉一. 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; }
}
以上就是用高德API获取天气和地理位置的用法,
本次就这么多了,感谢观看!!!
补充:
👉原理
高德地图SDK与Unity引擎深度集成,提供以下核心功能:
-
海量地理数据:包括3D建筑模型、道路、水系等真实世界数据,支持开发者快速构建游戏场景。
-
高效渲染:通过Unity插件自动处理地图渲染,开发者无需深入理解地图底层逻辑,可直接调用API实现场景生成。
-
LBS功能:支持基于真实地理位置的游戏玩法(如《阴阳师》的结界系统),通过SDK实现位置追踪和地图元素动态加载。
-
实现步骤
注册开发者账号:在高德开放平台创建应用,获取API密钥(Key)。
导入SDK:将高德提供的Unity插件集成到项目中,配置密钥和权限。
地图场景构建:
使用AMapUnitySDK加载地图数据,生成3D模型和地形。
通过代码动态调整地图风格(如科幻、二次元)。
LBS功能开发:调用定位接口获取玩家实时位置,实现位置相关游戏逻辑。
👉注意事项
密钥安全:避免硬编码密钥,可拆分存储或动态获取,防止反编译泄露。
模型优化:高精度3D模型可能导致性能问题,需使用LOD(多细节层次)技术优化渲染。
网络请求:确保异步加载地图数据,避免主线程阻塞,使用协程或UnityWebRequest处理。
平台兼容性:iOS需注意ARKit权限配置,Android需检查GPS和网络权限。
👉综合注意事项
API调用频率:高德接口有调用次数限制,需根据业务需求购买合适套餐。
数据安全:用户地理位置等敏感信息需加密传输,符合GDPR等隐私法规。
多线程处理:避免在UI线程直接处理网络请求,使用async/await或协程优化性能。
跨平台调试:在Unity Editor中模拟不同平台(如Android/iOS)的行为,确保功能一致性。
👉壁纸分享
👉总结
本次总结的就是高德API使用,有需要会继续添加新的
如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒