百度地图开放平台
更新时间: 2026/09/10 16:28
天气查询
简介

天气查询提供两个方法:weather 查询国内天气,weatherAbroad 查询海外天气。两者参数与返回结构完全一致,均可返回实况天气与未来 7 天预报。不传 location 时按当前定位点查询。

天气接口的 location 是"经度,纬度",与 search / reverseGeocoding 的"纬度,经度"顺序相反,这是最容易写错的地方,对照表见"服务介绍 → 坐标系说明"。
weatherAbroad 仅接受经纬度,不支持城市名
请求参数

weather 与 weatherAbroad 共用以下参数:

参数类型必填默认值说明

location

String

当前定位点

天气地点"经度,纬度",如 116.397470,39.908823

district_id

String

区县编码,与 location 二选一;同时传时官方按 district_id 优先

data_type

String

all

all 返回实况 + 7 天预报;now 仅返回实况

coordtype

String

gcj02

输入坐标类型

output

String

json

返回格式

success

Function

查询成功回调

fail

Function

查询失败回调

其余参数与百度天气服务请求参数一致,会原样透传。

返回值

success 回调入参:

字段类型说明

weatherData

Object

解析后的天气对象,字段见下表

originalData

Object

天气服务返回的完整原始数据

wxMarkerData

Array

兼容旧版调用,值为 [weatherData]

weatherData 字段:

字段类型说明

country

String

国家

province

String

省份

currentCity

String

城市

district

String

区县,仅接口返回时存在

weatherDesc

String

天气现象描述,如"多云"

temperature

Number

当前温度(℃)

feelsLike

Number

体感温度(℃)

humidity

Number

相对湿度,如 23 表示 23%,不含百分号

windDir

String

风向,如"西北风"

windClass

String

风力等级描述,如"2级"

aqi

Number

空气质量指数

vis

Number

能见度(米)

updatedAt

String

更新时间,接口原始紧凑格式如 20260903171500,展示需自行格式化

updatetime

String

兼容旧版调用,与 updatedAt 相同

forecast

Array

7 天预报,仅 data_type: 'all' 时返回,元素字段见下表

forecast 数组元素字段:

字段类型说明

date

String

日期,格式 yyyy-MM-dd

week

String

星期,如"星期四"

textDay

String

白天天气现象,如"晴"

high

Number

当日最高温(℃)

low

Number

当日最低温(℃)

失败时走 fail 回调,入参统一为 { errMsg, message, statusCode, rawMessage },字段含义见"服务介绍 → 统一的回调约定"。
若返回 statusCode 为 240,说明该 AK 未开通天气服务,请到控制台为应用勾选"天气"服务。

示例代码

查询当前定位点的实况天气与 7 天预报:

// pages/index/index.js
// 引用百度地图微信小程序 JSAPI 模块
const { BMapWX } = require('../../libs/bmap-wx.min.js');
const bmap = new BMapWX({ ak: '您的ak' });
// updatedAt 是接口原始紧凑格式 "20260903171500",展示前需自行格式化
function formatUptime(uptime) {
const m = String(uptime || '').match(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/);
return m ? m[1] + '-' + m[2] + '-' + m[3] + ' ' + m[4] + ':' + m[5] : uptime;
}
Page({
data: {
city: '',
now: null,
forecast: [],
error: '',
},
onLoad() {
// 不传 location 时查询当前定位点所在城市
bmap.weather({
data_type: 'all', // all 实况 + 7 天预报;now 仅实况
success: (res) => {
const w = res.weatherData;
this.setData({
city: [w.province, w.currentCity, w.district].filter(Boolean).join(' '),
now: {
desc: w.weatherDesc,
temperature: w.temperature,
feelsLike: w.feelsLike,
humidity: w.humidity, // 数值,不含 % 后缀
wind: w.windDir + w.windClass,
aqi: w.aqi,
updatedAt: formatUptime(w.updatedAt),
},
forecast: (w.forecast || []).map((f, i) => ({
week: i === 0 ? '今天' : String(f.week || '').replace('星期', '周'),
textDay: f.textDay,
high: f.high,
low: f.low,
})),
});
},
fail: err => this.setData({ error: '天气查询失败:' + (err.message || err.errMsg) }),
});
},
});
<!-- pages/index/index.wxml -->
<view wx:if="{{now}}">
<view>{{city}}</view>
<view>{{now.temperature}}</view>
<view>{{now.desc}} · 体感 {{now.feelsLike}}</view>
<view>湿度 {{now.humidity}}% · {{now.wind}} · AQI {{now.aqi}}</view>
<view>更新于 {{now.updatedAt}}</view>
</view>
<view wx:for="{{forecast}}" wx:key="index">
<text>{{item.week}}</text>
<text>{{item.textDay}}</text>
<text>{{item.low}}° / {{item.high}}°</text>
</view>
<view wx:if="{{error}}">{{error}}</view>

查询海外城市改用 weatherAbroad,参数与返回结构不变:

// pages/index/index.js
// 海外天气:只接受"经度,纬度",不支持城市名
bmap.weatherAbroad({
location: '139.7671,35.6812', // 东京
success: res => console.log(res.weatherData.currentCity, res.weatherData.temperature),
fail: err => console.log(err.message || err.errMsg),
});
Demo 效果与体验

下图为官方 Demo"天气查询"的运行界面,扫描下方小程序码即可直接体验。Demo 是产品化示例,界面比上面的示例代码精致,但调用方式与返回数据完全一致。

注意事项
  • updatedAt 是接口原始紧凑格式,SDK 原样透传不做加工,展示前请自行格式化,示例中的 formatUptime 可直接复用。

  • humidity 是不带百分号的数值,展示时需自行拼接 %

  • 只需要实况数据时传 data_type: 'now' 可减小响应体积,此时 forecast 为空数组。

  • aqi 与 vis 并非所有城市都返回,渲染前需做空值判断。

  • 查询海外城市必须用 weatherAbroad 并传经纬度;weather 仅覆盖国内。

  • 未显式传 location 时会调用 wx.getLocation,请先在 app.json 中声明 getLocation 隐私接口,见配置环境

上一篇

逆地址解析

下一篇

驾车路线规划
本篇文章对您是否有帮助?