百度地图开放平台
更新时间: 2026/09/10 16:28
地址解析
简介

geocoding 即正向地理编码,把结构化地址(省 / 市 / 区 / 街道 / 门牌号)解析为经纬度坐标。例如把"北京市海淀区上地十街10号"解析为 116.30051,40.0511。地址结构越完整、内容越准确,解析出的坐标精度越高。
返回结果包含 wxMarkerData(符合小程序 marker 规范,可直接用于 <map> 组件)与 originalData(Geocoding API 完整原始数据)两部分。

请求参数
参数类型必填默认值说明

address

String

待解析地址,如"北京市海淀区上地十街10号"

city

String

地址所在城市,可提升同名地址的解析准确度

ret_coordtype

String

gcj02ll

返回坐标类型,旧键 coordtype 兼容

output

String

json

返回格式

iconPath

String

小程序 marker 图标路径

iconTapPath

String

小程序 marker 点击后的图标路径

width

Number

30

marker 宽度,新版基础库必填,未传时取默认值

height

Number

30

marker 高度,新版基础库必填,未传时取默认值

alpha

Number

1

marker 透明度

success

Function

解析成功回调

fail

Function

解析失败回调

其余参数与Geocoding API请求参数一致,会原样透传。

返回值

success 回调入参:

字段类型说明

wxMarkerData

Array

小程序格式的 marker 数组,元素结构见下表

originalData

Object

Geocoding API 返回的完整原始数据

wxMarkerData 数组元素字段:

字段类型说明

id

Number

marker 序号,固定为 0

latitude

Number

纬度(gcj02)

longitude

Number

经度(gcj02)

返回的 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 本地拦截,此时只有 errMsg
fail: err => this.setData({ error: '地址解析失败:' + (err.message || err.errMsg) }),
});
},
});
<!-- pages/index/index.wxml -->
<input
placeholder="输入地址,如:北京市海淀区上地十街10号"
value="{{address}}"
confirm-type="search"
bindinput="onAddressInput"
bindconfirm="resolveAddress"
/>
<button bindtap="resolveAddress">解析地址</button>
<map
style="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"地址解析"的运行界面,扫描下方小程序码即可直接体验。Demo 是产品化示例,界面比上面的示例代码精致,但调用方式与返回数据完全一致。

注意事项
  • 地址解析只返回一个坐标点,wxMarkerData 长度固定为 1;若地址不存在则数组为空,需要做空值判断。

  • 同名地址较多时建议同时传 city 限定范围,例如"人民路"在多个城市都存在。

  • 解析精度可从 originalData.result.precise 与 confidence 判断,用于决定是否需要用户二次确认。

  • 如需反向能力(坐标转地址),请使用"逆地址解析"。

上一篇

POI检索热词联想

下一篇

逆地址解析
本篇文章对您是否有帮助?