首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Unity接高德地图以及天气API

Unity接高德地图以及天气API

作者头像
心疼你的一切
发布2026-01-20 13:35:45
发布2026-01-20 13:35:45
760
举报
文章被收录于专栏:人工智能人工智能
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 下面是获取天气代码

代码语言:javascript
复制
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 获取当前位置的代码如下

代码语言:javascript
复制
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获取天气和地理位置的用法,

本次就这么多了,感谢观看!!! 补充:一个免费的天气API链接

点击进去之后可以看到链接,链接最后是城市编号,替换城市编号即可获取不同的城市

👉原理

高德地图SDK与Unity引擎深度集成,提供以下核心功能:

  1. 海量地理数据:包括3D建筑模型、道路、水系等真实世界数据,支持开发者快速构建游戏场景。
  2. 高效渲染:通过Unity插件自动处理地图渲染,开发者无需深入理解地图底层逻辑,可直接调用API实现场景生成。
  3. LBS功能:支持基于真实地理位置的游戏玩法(如《阴阳师》的结界系统),通过SDK实现位置追踪和地图元素动态加载。
  4. 实现步骤 注册开发者账号:在高德开放平台创建应用,获取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开发技巧,觉得有用记得一键三连哦。么么哒

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • unity接入高德地图API实践
  • 👉前言
  • 👉一. unity用高德获取天气
    • 👉1.0 注册开发者账号
    • 👉1.1 第一步先去高德地图开发者平台地址:https://lbs.amap.com/
    • 👉1.2 登陆之后,创建应用
    • 👉1.3然后创建应用
    • 👉1.4 选择web服务之后就有了
    • 👉1.5 key就是申请的密钥之后代码会用的到
    • 👉1.6 下面是获取天气代码
    • 👉1.7 脚本随便挂一个地方运行测试即可
  • 👉二. unity用高德获取当前位置
    • 👉2.1 当前位置打印如下图
    • 👉2.2 里面有经纬度,省份,城市编码…
    • 👉2.3 获取当前位置的代码如下
  • 👉原理
  • 👉注意事项
  • 👉综合注意事项
  • 👉总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档