geocoding 即正向地理编码,把结构化地址(省 / 市 / 区 / 街道 / 门牌号)解析为经纬度坐标。例如把"北京市海淀区上地十街10号"解析为 116.30051,40.0511。地址结构越完整、内容越准确,解析出的坐标精度越高。
返回结果包含 wxMarkerData(符合小程序 marker 规范,可直接用于 <map> 组件)与 originalData(Geocoding API 完整原始数据)两部分。
其余参数与Geocoding API请求参数一致,会原样透传。
success 回调入参:
wxMarkerData 数组元素字段:
返回的 marker 元素会原样透传调用方传入的样式字段(iconPath / iconTapPath / width / height / alpha),因此可直接绑定到 小程序 map 组件 的 markers 属性。
失败时走 fail 回调,入参统一为 { errMsg, message, statusCode, rawMessage },字段含义见"服务介绍 → 统一的回调约定"。
address 为空时 SDK 会本地拦截,不发起请求,此时 fail 入参只有 errMsg(值为"请输入待解析地址")。
输入地址后解析出经纬度并在地图上打点:
// pages/index/index.js// 引用百度地图微信小程序 JSAPI 模块const { BMapWX } = require('../../libs/bmap-wx.min.js');const bmap = new BMapWX({ ak: '您的ak' });Page({data: {address: '北京市海淀区上地十街10号',latitude: '',longitude: '',markers: [],error: '',},onLoad() {this.resolveAddress();},onAddressInput(e) {this.setData({ address: e.detail.value });},// 地址 -> 经纬度resolveAddress() {const address = this.data.address.trim();if (!address) {this.setData({ error: '请输入待解析地址' });return;}bmap.geocoding({address,iconPath: '../../img/marker_red.png',iconTapPath: '../../img/marker_red.png',success: (res) => {const m = res.wxMarkerData[0];if (!m) {this.setData({ error: '未解析出坐标,请确认地址是否有效' });return;}this.setData({markers: res.wxMarkerData,latitude: m.latitude,longitude: m.longitude,error: '',});},// address 为空时 SDK 本地拦截,此时只有 errMsgfail: err => this.setData({ error: '地址解析失败:' + (err.message || err.errMsg) }),});},});
<!-- pages/index/index.wxml --><inputplaceholder="输入地址,如:北京市海淀区上地十街10号"value="{{address}}"confirm-type="search"bindinput="onAddressInput"bindconfirm="resolveAddress"/><button bindtap="resolveAddress">解析地址</button><mapstyle="width: 100%; height: 300px;"longitude="{{longitude}}"latitude="{{latitude}}"scale="15"markers="{{markers}}"/><view wx:if="{{longitude}}">经度:{{longitude}} 纬度:{{latitude}}</view><view wx:if="{{error}}">{{error}}</view>
下图为官方 Demo"地址解析"的运行界面,扫描下方小程序码即可直接体验。Demo 是产品化示例,界面比上面的示例代码精致,但调用方式与返回数据完全一致。


地址解析只返回一个坐标点,wxMarkerData 长度固定为 1;若地址不存在则数组为空,需要做空值判断。
同名地址较多时建议同时传 city 限定范围,例如"人民路"在多个城市都存在。
解析精度可从 originalData.result.precise 与 confidence 判断,用于决定是否需要用户二次确认。
如需反向能力(坐标转地址),请使用"逆地址解析"。
上一篇
下一篇