地理编码-逆地理编码-经纬度解析-逆经纬度解析API接口的运用

举报
聚美智数 发表于 2026/01/29 16:59:24 2026/01/29
【摘要】 本文详解地理编码(地址→坐标)与逆地理编码(坐标→地址)技术,覆盖实时定位、车辆追踪、地图搜索与导航等应用场景;对比高德(GCJ02)与百度(BD09)地图API的参数、返回结构及坐标系差异,助力开发者快速集成位置服务

移动互联网发展到今天,地图应用已非常广泛,比如:

  • 实时定位:打开地图App,它会自动定位你的坐标,并显示出具体地址信息。
  • 车辆/资产追踪:监控系统收到一个GPS坐标,需要将其转换为“车辆正在京港澳高速保定段”这样的可读信息,方便管理员理解。
  • 地图搜索与导航:用户在导航App中输入目的地地址,App将其转换为坐标后才能进行路径规划。
  • 物流与配送:将收件人的地址转换为坐标,用于优化配送路线和跟踪。
  • 位置服务注册:为商家或服务地点在线上地图进行标注。
  • 照片地理标记:用手机拍摄的照片包含了GPS坐标,相册或社交软件可以通过逆地理编码自动为照片添加地点标签

要实现以上功能,采用地理编码、逆地理编码就是最好的解决方法:

  • 地理编码,又称经纬度解析,是指将人类可读的地址信息转换为地理坐标(经纬度)
  • 逆地理编码,又称经纬度解析,是地理编码的逆向过程,是指将地理坐标(经纬度)转换为人类可读的地址描述的过程

地图基于坐标系,目前主流的坐标系有:

  • GCJ02:火星坐标系,国内使用,比如:腾讯、高德
  • WGS84 :国际通用坐标系,比如:手机GPS设备、Google
  • BD09:百度坐标系

对于开发者,不需要自己建立庞大的地理数据库,而是调用成熟的API服务

本文介绍基于火星坐标系的高德地图和百度坐标系的百度地图

高德地图

地理编码

请求参数

名称 类型 必须 说明
address String 规则遵循:国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦,如:北京市朝阳区阜通东大街6号。
city String
output String 可选输入内容包括:JSON,XML。设置 JSON 返回结果数据将会以JSON结构构成;如果设置 XML 返回结果数据将以 XML 结构构成。
callback String callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效。

详细参阅这里

返回样例

{   
  "msg": "成功",
  "success": true,
  "code": 200,
  "taskNo": "74848319667949359984",
  "charge": true,
  "data": {   
    "count": 1,//返回结果数目
    "geocodes": [//地理编码信息列表
      {   
        "country": "中国",//国家
        "formatted_address": "浙江省杭州市萧山区美哉美城",//格式化的地址
        "province": "浙江省",//地址所在的省份名
        "city": "杭州市",//地址所在的市区名称
        "citycode": "0571",//城市编码
        "district": "萧山区",//地址所在的区
        "street": "街道",//街道
        "number": "门牌",//门牌
        "adcode": "330109",//区域编码
        "location": "120.256544,30.224111",//经度,纬度
        "level": "兴趣点",//匹配级别
      }
    ]
  }

逆地理编码

请求参数

名称 类型 必须 说明
location String 传入内容规则:经度在前,纬度在后,经纬度间以“,”分割,经纬度小数点后不要超过 6 位。
poitype String 支持传入POI TYPECODE及名称;支持传入多个POI类型,多值间用"
radius String 搜索半径。radius取值范围在0~3000,默认是1000。单位:米
extensions String 返回结果控制。extensions 参数默认取值是 base,也就是返回基本地址信息; extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。
roadlevel String 道路等级。以下内容需要 extensions 参数为 all 时才生效。 可选值:0,1 当roadlevel=0时,显示所有道路 当roadlevel=1时,过滤非主干道路,仅输出主干道路数据
output String 返回数据格式类型。可选输入内容包括:JSON,XML。设置 JSON 返回结果数据将会以JSON结构构成;如果设置 XML 返回结果数据将以 XML 结构构成。
callback String 回调函数。callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效
homeorcorp String 是否优化POI返回顺序。以下内容需要 extensions 参数为 all 时才生效。 homeorcorp 参数的设置可以影响召回 POI 内容的排序策略,目前提供三个可选参数: 0:不对召回的排序策略进行干扰。 1:综合大数据分析将居家相关的 POI 内容优先返回,即优化返回结果中 pois 字段的poi顺序。 2:综合大数据分析将公司相关的 POI 内容优先返回,即优化返回结果中 pois 字段的poi顺序。

详细参阅这里

返回样例

{   
  "msg": "成功",
  "success": true,
  "code": 200,
  "taskNo": "25247068960117401139",
  "charge": true,
  "data": {   
    "regeocodes": [{
    //逆地理编码列表
      "formatted_address": "浙江省杭州市萧山区盈丰街道顺发·美哉美城",//坐标地址
      "addressComponent": {
   //地址元素列表
        "country": "中国",//国家
        "province": "浙江省",//坐标点所在省名称
        "citycode": "0571",//城市编码
        "city": "杭州市",//坐标点所在城市名称
        "adcode": "330109",//行政区编码
        "towncode": "330109015000",//乡镇街道编码
        "district": "萧山区",//坐标点所在区
        "township": "盈丰街道",//坐标点所在乡镇/街道
        "seaArea": "所属海域信息",//所属海域信息
        "neighborhood": {
   //社区信息列表
          "name": [],//社区名称
          "type": []//POI类型
        },
        "building": {
   //楼信息列表
          "name": [],//建筑名称
          "type": []//类型
        },
        "streetNumber": {
   //门牌信息列表
          "number": "281号",//门牌号
          "distance": "52.8425",//门牌地址到请求坐标的距离
          "street": "民和路",//街道名称
          "location": "120.257076,30.224231",//坐标点 经度,纬度
          "direction": "东"//方向
        },
        "businessAreas": [//经纬度所属商圈列表
          {   
            "businessArea":"",//商圈信息
            "name": "宁围",//商圈名称
            "location": "120.273765,30.225767",//商圈中心点经纬度 经度,纬度
            "id": "330109"//商圈所在区域的adcode
          }
        ]
      },
      "roads": [//道路信息列表 请求参数 extensions 为 all 时返回
          {   
            "id": "",//道路id
            "name": "",//道路名称
            "distance": "",//道路到请求坐标的距离  米
            "direction": "",//方位
            "location": ""//坐标点 经度,纬度
          }
        ],
        "roadinters": [//道路交叉口列表 请求参数 extensions 为 all 时返回
          {   
            "distance": "",//交叉路口到请求坐标的距离 米
            "direction": "",//方位
            "location": "",//路口经纬度 经度,纬度
            "first_id": "",//第一条道路名称
            "first_name": "",//第二条道路id
            "second_id": "",//第二条道路名称
            "second_name": ""//第二条道路id
          }
        ],
        "pois":[//poi信息列表
          {   
            "id": "",//poi的id
            "name": "",//poi点名称
            "type": "",//poi类型
            "tel": "",//电话
            "distance": "",//该POI的中心点到请求坐标的距离 米
            "direction": "",//方向
            "address": "",//poi地址信息
            "location": "",//坐标点 经度,纬度
            "businessarea": ""//poi所在商圈名称
          }
        ],
        "aois":[//aoi信息列表
          {   
            "id": "",//aoi的id
            "name": "",//aoi点名称
            "adcode": "",//所属 aoi 所在区域编码
            "location": "",//所属 aoi 中心点坐标 经度,纬度
            "area": "",//所属aoi点面积
            "distance": ""//输入经纬度是否在aoi面之中
          }
        ]
    }]
  }
}

百度地图

地理编码

请求参数

名称 类型 必须 说明
address String 待解析的地址。最多支持84个字节。可以输入两种样式的值,分别是:1、标准的结构化地址信息,北京市海淀区上地十街十号【推荐,地址结构越完整,解析精度越高】2、支持“路与路交叉口”描述方式,如北一环路和阜阳路的交叉路口第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回。
city String 地址所在的城市名。用于指定上述地址所在的城市,当多个城市都有上述地址时,该参数起到过滤作用,但不限制坐标召回城市。
retCoordtype String 添加后返回国测局经纬度坐标或百度米制坐标。示例:gcj02(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标)。默认bd09ll。
output String 输出格式为json或者xml,默认json
callback String 将json格式的返回值通过callback函数返回以实现jsonp功能

详细参阅这里

返回样例

{   
  "charge": true,//计费标志
  "code": 200,//返回码,详见返回码说明
  "msg": "成功",//返回码对应描述
  "taskNo": "340833941206534747872156",//本次请求号
  "data": {   
    "confidence": 75,//描述打点绝对精度(即坐标点的误差范围)。confidence=100,解析误差绝对精度小于20m;confidence≥90,解析误差绝对精度小于50m;confidence≥80,解析误差绝对精度小于100m;confidence≥75,解析误差绝对精度小于200m;confidence≥70,解析误差绝对精度小于300m;confidence≥60,解析误差绝对精度小于500m;confidence≥50,解析误差绝对精度小于1000m;confidence≥40,解析误差绝对精度小于2000m;confidence≥30,解析误差绝对精度小于5000m;confidence≥25,解析误差绝对精度小于8000m;confidence≥20,解析误差绝对精度小于10000m;
    "analys_level": "POI",//可以解析地址文本中的最小地址结构,例如问题地址:北京市海淀区北京路百度大厦,analys_level:"POI",能精确理解的地址类型包含: 省 市 区县 乡镇 道路 门址 POI 。
    "level": "商务大厦",//可以打点到地址文本中的真实地址结构,例如问题地址:北京市海淀区北京路百度大厦,level:"道路",能精确理解的地址类型,包含:UNKNOWN、国家、省、城市、区县、乡镇、村庄、道路、地产小区、商务大厦、政府机构、交叉路口、商圈、生活服务、休闲娱乐、餐饮、宾馆、购物、金融、教育、医疗 、工业园区 、旅游景点 、汽车服务、火车站、长途汽车站、桥 、停车场/停车区、港口/码头、收费区/收费站、飞机场 、机场 、收费处/收费站 、加油站、绿地、门址
    "location": {   
      "lng": 120.00135828539837,//经度值
      "lat": 30.287874445189647 //纬度值
    },
    "precise": 1,//位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点。
    "comprehension": 35 //描述地址理解程度。分值范围0-100,分值越大,服务对地址理解程度越高(建议以该字段作为解析结果判断标准),当comprehension值为以下值时,对应的准确率如下:comprehension=100,解析误差100m内概率为91%,误差500m内概率为96%;comprehension≥90,解析误差100m内概率为89%,误差500m内概率为96%;comprehension≥80,解析误差100m内概率为88%,误差500m内概率为95%;comprehension≥70,解析误差100m内概率为84%,误差500m内概率为93%;comprehension≥60,解析误差100m内概率为81%,误差500m内概率为91%;comprehension≥50,解析误差100m内概率为79%,误差500m内概率为90%,解析误差:地理编码服务解析地址得到的坐标位置,与地址对应的真实位置间的距离。
  }
}

逆地理编码

输入参数

名称 类型 必须 说明
location String 根据经纬度坐标获取地址,格式:纬度,经度。例如:120.067824,31.413068。
coordtype String 坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84( GPS经纬度)。默认bd09ll。
retCoordtype String 添加后返回国测局经纬度坐标或百度米制坐标。示例:gcj02(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标)。默认bd09ll。
extensionsPoi String extensions_poi=0,不召回pois数据。extensions_poi=1,返回pois数据(默认显示周边1000米内的poi),并返回sematic_description语义化数据。
extensionsRoad String 当取值为true时,召回坐标周围最近的3条道路数据。默认false。
extensionsTown String 当取值为true时,行政区划返回乡镇级数据(town),仅国内召回乡镇数据。当取值为false时,行政区划不返回乡镇级数据(town)。默认true。
radius String 以下内容需要 extensionsPoi=1时才生效;poi召回半径,允许设置区间为0-1000米,超过1000米按1000米召回。默认1000。
callback String 将json格式的返回值通过callback函数返回以实现jsonp功能。
poiTypes String 以下内容需要 extensionsPoi=1时才生效;可以选择poi类型召回不同类型的poi,例如poiTypes=酒店,如想召回多个POI类型数据,可以
language String 指定召回的行政区划语言类型。 召回行政区划语言list(全量支持的语言见示例)。 当language=local时,根据请求中坐标所对应国家的母语类型,自动选择对应语言类型的行政区划召回。目前支持多语言的行政区划区划包含country、province、city、district。包含:el gu en vi ca it iw sv eu ar cs gl id es en-GB ru sr nl pt tr tl lv en-AU lt th ro fil ta fr bg hr bn de hu fa hi pt-BR fi da ja te pt-PT ml ko kn sk zh-CN pl uk sl mr local
languageAuto String 当用户指定language参数时,是否自动填充行政区划。1填充,0不填充。填充:当服务按某种语言类别召回时,若某一行政区划层级的语言数据未覆盖,则按照“英文→中文→本地语言”类别行政区划数据对该层级行政区划进行填充,保证行政区划数据召回完整性。

详细参阅这里

返回样例

{   
  "charge": true,//计费标志
  "code": 200,//返回码,详见返回码说明
  "msg": "成功",//返回码对应描述
  "taskNo": "007493807239868764046631",//本次请求号
  "data": {   
    "formatted_address": "江苏省无锡市滨湖区",//结构化地址(不包含POI信息)。如果需要标准的结构化地址,比如获取XX路XX号,推荐使用这个参数
    "business": "",//坐标所在商圈信息,如 "人民大学,中关村,苏州街"。最多返回3个。
    "sematic_description": "梨梨园上草土菜馆客栈西888米",//当前位置结合POI的语义化结果描述。需设置extensionsPoi=1才能返回。
    "roads": [
      {   
        "name": "",//周边道路名称
        "distance": ""//传入的坐标点距离道路的大概距离
      }
    ],
    "formatted_address_poi": "江苏省无锡市滨湖区马山街道梨梨园上草土菜馆客栈西888米",//结构化地址(包含POI信息)。需设置extensions_poi=1才能返回。如果需要详细的地址描述,推荐使用这个参数。
    "location": {
   
      "lng": 120.06782399999993,//经度值
      "lat": 31.413067895001422 //纬度值
    },
    "edz": {
   //所属开发区
      "name": "" //
    },
    "poiRegions": [
      {   
        "direction_desc": "",//请求中的坐标与所归属区域面的相对位置关系
        "name": "",//归属区域面名称
        "tag": "",//归属区域面类型
        "distance": "",//离坐标点距离
        "uid": "",//poi唯一标识
      }
    ],
    "pois": [
      {   
        "zip": "",//邮编
        "uid": "60c55c3bd4fbb98c276e98a7",//poi唯一标识
        "distance": "888",//离坐标点距离
        "poiType": "美食",//
        "name": "梨梨园上草土菜馆客栈",//poi名称
        "tel": "",//电话
        "parent_poi": {
   //poi对应的主点poi(如,海底捞的主点为上地华联,该字段则为上地华联的poi信息。如无,该字段为空),包含子字段和pois基础召回字段相同。
          "uid": "",//
          "distance": "",//
          "name": "",//
          "tag": "",//
          "addr": "",//
          "point": {   
            "x": 0,//
            "y": 0 //
          },
          "direction": ""//
        },
        "tag": "美食",//poi类型,如’美食;中餐厅’。tag与poiType字段均为poi类型,建议使用tag字段,信息更详细
        "addr": "江苏省无锡市滨湖区马山镇和平村北门环山西路91号",//地址信息
        "cp": " ",//
        "point": {
   //poi坐标
          "x": 120.07520393899887,//
          "y": 31.410457606202677 //
        },
        "direction": "西"//和当前坐标点的方向
      }
    ],
    "addressComponent": {
   //注意,国外行政区划,字段仅代表层级
      "city_level": 2,//城市所在级别(仅国外有参考意义。国外行政区划与中国有差异,城市对应的层级不一定为『city』。country、province、city、district、town分别对应0-4级,若city_level=3,则district层级为该国家的city层级)
      "country": "中国",//国家
      "town": "马山街道",//乡镇名,需设置extensions_town=true时才会返回
      "distance": "",//区县名
      "city": "无锡市",//城市名
      "adcode": "320211",//行政区划代码
      "country_code_iso": "CHN",//国家英文缩写(三位)
      "country_code_iso2": "CN",//国家英文缩写(两位)
      "country_code": 0,//国家编码
      "town_code": "320211009",//乡镇id
      "province": "江苏省",//省名
      "street": "",//道路名
      "district": "滨湖区",//相对当前坐标点的距离,当有门牌号的时候返回数据
      "street_number": "",//道路门牌号
      "direction": ""//相对当前坐标点的方向,当有门牌号的时候返回数据
    }
  }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。