uniapp小程序官方天气api如何使用

我在uniapp开发小程序时需要接入官方天气API,但文档说明不太清楚。具体有几个问题想请教:

  1. 如何申请和配置天气API的权限?需要哪些步骤?
  2. API的调用频率和限制是多少?
  3. 返回的天气数据格式是怎样的?有哪些关键字段需要注意?
  4. 在小程序中调用时有没有特殊的域名配置要求?
  5. 能否提供一个完整的调用示例代码?

调试时一直报错,希望能得到详细的指导。

2 回复

UniApp本身不提供官方天气API。你可以:

  1. 使用第三方天气API(如和风、高德)
  2. 在manifest.json配置网络权限
  3. 通过uni.request调用接口
  4. 返回数据后渲染到页面

记得申请API密钥,注意每日调用限制。


UniApp 小程序中,官方并未提供专门的天气 API,但你可以通过以下两种常用方式实现天气功能:


1. 使用第三方天气 API

推荐高德地图、和风天气等服务的 API,步骤如下:

示例:高德天气 API

  1. 申请密钥
    前往高德开放平台,注册账号并创建应用,获取 API Key。

  2. 调用方式
    在 UniApp 中通过 uni.request 发送请求:

    // 示例:根据城市名称查询天气
    uni.request({
      url: 'https://restapi.amap.com/v3/weather/weatherInfo',
      data: {
        key: '你的高德API_KEY', // 替换为实际 Key
        city: '北京',           // 城市名称或编码
        extensions: 'base'     // base:返回实时天气;all:返回预报
      },
      success: (res) => {
        console.log('天气数据:', res.data);
        // 处理返回的天气信息
      },
      fail: (err) => {
        console.error('请求失败:', err);
      }
    });
    

返回数据示例(高德):

{
  "status": "1",
  "count": "1",
  "info": "OK",
  "lives": [{
    "province": "北京市",
    "city": "北京市",
    "adcode": "110000",
    "weather": "晴",
    "temperature": "25",
    "winddirection": "东南风",
    "windpower": "≤3级"
  }]
}

2. 使用 UniApp 的定位 + 天气 API 组合

  1. 获取用户位置
    通过 uni.getLocation 获取经纬度:

    uni.getLocation({
      type: 'wgs84',
      success: (loc) => {
        const { latitude, longitude } = loc;
        // 将经纬度传递给天气 API(需支持坐标查询)
      }
    });
    
  2. 根据坐标查询天气
    部分天气 API(如和风天气)支持经纬度参数,直接请求即可。


注意事项:

  1. 域名白名单
    在 UniApp 的 manifest.json 中配置 request 合法域名(如:https://restapi.amap.com)。
  2. 权限配置
    若使用定位,需在 manifest 中声明定位权限,并在小程序管理后台开启对应权限。
  3. 免费额度
    第三方 API 通常有每日调用次数限制,需注意控制频率。

通过以上步骤,即可快速集成天气功能。如有更复杂需求(如天气预报),可参考对应 API 文档调整参数。

回到顶部