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

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检索热词联想

下一篇

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