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; }
}



本次就这么多了,感谢观看!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Unity中使用MQTT连高德地图服务器,您需要遵循以下步骤: 1. 下载并安装MQTT库:您可以使用paho-mqtt库来在Unity中使用MQTT。请确保在Unity中正确安装该库。 2. 创建MQTT连:使用paho-mqtt库创建一个MQTT连,该连将连高德地图服务器。 3. 订阅主题:为了高德地图服务器发送的消息,您需要订阅一个或多个主题。 4. 处理消息:一旦您的Unity应用程序订阅了主题,它将开始收消息。您需要编写代码来处理这些消息并根据需要更新您的Unity场景。 以下是一个示例代码片段,演示如何在Unity中连到MQTT服务器并订阅高德地图服务器发送的主题: ```csharp using UnityEngine; using System.Collections; using MQTT; public class MqttExample : MonoBehaviour { private MQTT.Client client; // Use this for initialization void Start () { client = new MQTT.Client("tcp://mqtt.example.com:1883", "exampleclient"); client.Connect(); client.Subscribe(new string[] { "topic1", "topic2" }, new byte[] { MQTT.MsgBase.QOS_LEVEL_AT_MOST_ONCE, MQTT.MsgBase.QOS_LEVEL_AT_LEAST_ONCE }); client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; } void client_MqttMsgPublishReceived(object sender, MQTT.MqttMsgPublishEventArgs e) { Debug.Log("Received: " + System.Text.Encoding.UTF8.GetString(e.Message)); } } ``` 请注意,此代码仅是示例代码,并且需要进行修改以适应您的具体应用程序和服务器设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心疼你的一切

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值