百度地图WEB服务-正地理编码使用心得
写在前面
前段时间做了一个关于旅游行程推荐的项目需要使用路径规划,于是接触到百度地图开放平台,由于项目以WEB形式开发,所以使用了百度地图的WEB服务API,由于这是第一次写的相关博文,所以就先整理一下使用最多的正地理编码接口的心得。
正地理编码
在百度地图中所有的地理位置信息都是由经纬度坐标构成,所以如何将一个实际存在的结构化的地理信息转化为经纬度坐标是非常重要的一个环节。想要实现此功能就需要调用正地理编码接口(地理编码服务当前未推出国际化服务,解析地址仅限国内)。
官方文档中接口示例:http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求
在官方给定的示例中可以看到接口的主体是(https也支持)
http://api.map.baidu.com/geocoding/v3/
参数有:
参数名称 | 说明 |
---|---|
ak | 用户申请注册的key,自v2版本开始参数修改为“ak”,之前版本参数为“key”(申请ak) |
address | 需要被转化的地址信息(地址结构越完整,解析精度越高) |
output | 接口返回信息格式,可选格式有json和xml(默认xml) |
callback | 将json格式的返回值通过callback设置函数返回以实现jsonp功能(不使用jsonp的用户可忽略此参数) |
以上参数是官方示例中给定的,其中“ak”与“address”参数为必填参数,其余参数可视使用情况选择使用。
在此接口中除了以上参数外官方文档还给出以下参数以辅助用户的其他需求(不是必填参数)
- city:当多个城市含有address字段中给定地址时(如广州和贵阳都有白云区)此时若想获取指定的经纬度坐标可使用此参数限定城市为广州市或贵阳市。
- ret_coordtype:选择返回经纬度坐标类型可选值有gcj02ll(国测局坐标)、bd09mc(百度墨卡托坐标),此参数若不填默认为bd09mc。若对坐标类型有需求的用户可填写此字段。下为坐标类型说明:
- WGS84:一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
- GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
- BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
- sn:若用户所用ak的校验方式为sn校验时填写此参数,若无此需求可忽略此参数。
Postman进行的一次正编码接口请求测试
测试请求连接:
http://api.map.baidu.com/geocoding/v3/?address=江苏省南京市秦淮区贡院西街53号&ret_coordtype=gcj02ll&output=json&ak=你的ak
请求返回的JSON数据:
{
"status": 0,
"result": {
"location": {
"lng": 118.78883097446304,
"lat": 32.02145204694694
},
"precise": 1,
"confidence": 80,
"comprehension": 100,
"level": "门址"
}
}
若output参数设置为xml返回的XML格式数据:
<?xml version="1.0" encoding="utf-8"?>
<GeocoderSearchResponse>
<status>0</status>
<result>
<location>
<lng>118.788830974</lng>
<lat>32.0214520469</lat>
</location>
<precise>1</precise>
<confidence>80</confidence>
<comprehension>100</comprehension>
<level>门址</level>
</result>
</GeocoderSearchResponse>
从请求测试返回数据可以看出status字段是状态码值,若为0表示请求成功,返回其他值表示失败。
result字段是具体的编码后信息,其中包含字段意义如下
- location:此字段就是此接口最核心返回的内容,即转化后的经纬度坐标,lat表纬度值,lng表经度值。
- precise:1为精确查找;0为不精确。
- confidence:坐标点的误差范围,该值越大表示误差越小
- comprehension:地址理解程度。分值范围0-100,分值越大,服务对地址理解程度越高。(建议以该字段作为解析结果判断标准)
- level:结构化地址的类型。(例:省,城市等等)
更多有关正地理编码接口使用详情可查看官方服务文档:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
总结
第一次写博文,如果有不足之处欢迎大家留言,相关百度地图方面博文后面会持续更新,欢迎大家支持。