百度地图WEB服务-逆地理编码使用心得


上一篇博文写了我开发项目中最长用的正地理编码接口的博文,这次想总结一下逆地理编码的使用情况,当我们请求百度地图WEB服务中接口得到的返回数据时会发现所有对地理位置的描述都是以经纬度坐标的形式返回,但当我们处理这些返回信息时,我们需要根据这些坐标得到实际的结构化的地理位置信息,这时就需要使用百度地图开发平台提供的逆地理编码服务。

逆地理编码接口

用户可通过此接口将经纬度坐标解析成对应的结构化地址位置数据以及获得周边高权重地标地点分布情况。
官方给定的接口请求示例:

http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194 //GET请求

该接口中含有参数如下

参数名称说明
ak用户申请注册的key,自v2版本开始参数修改为“ak”,之前版本参数为“key”(申请ak
output接口返回信息格式,可选格式有json和xml(默认xml)
coordtype需转换坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度),默认值bd09ll官方坐标系说明
location需转换坐标,格式:(lat<纬度>,lng<经度>)

以上字段中 ak 和 location 两字段为必填字段,若缺少则无法成功请求。其余两字段为非必须字段按照实际使用情况进行选择填写即可。但需要注意的是coordtype字段的使用,虽然此字段不是必填字段但在具体的项目中可能使用多种接口进行项目开发,所以需要转换的坐标类型可能不同,而不同的坐标类型对于相同地点的经纬度描述有一定的差别,如果不在coordtype字段进行明确的标识坐标类型则可能出现转换后的地理位置信息偏差,造成项目功能的出错。
除了以上字段外该接口中还提供以下字段帮助用户获取更加适合的返回信息:

  • ret_coordtype:设置调用接口后返回数据中含有的经纬度坐标类型,可选类型gcj02ll(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标),此参数为可选参数默认值为bd09ll(百度经纬度坐标)。
  • callback:将json格式的返回值通过callback设置函数返回以实现jsonp功能(不使用jsonp的用户可忽略此参数)
  • sn:若用户所用ak的校验方式为sn校验时填写此参数,若无此需求可忽略此参数。

Postman接口请求测试

8
测试请求链接

http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=gcj02ll&location=31.701209981168046,118.88437939477721&ret_coordtype=gcj02ll&ak=你的ak

请求返回的JSON格式数据

{
    "status": 0,
    "result": {
        "location": {
            "lng": 118.88437965349836,
            "lat": 31.701209142499715
        },
        "formatted_address": "江苏省南京市江宁区汇文路",
        "business": "",
        "addressComponent": {
            "country": "中国",
            "country_code": 0,
            "country_code_iso": "CHN",
            "country_code_iso2": "CN",
            "province": "江苏省",
            "city": "南京市",
            "city_level": 2,
            "district": "江宁区",
            "town": "",
            "town_code": "",
            "adcode": "320115",
            "street": "汇文路",
            "street_number": "",
            "direction": "",
            "distance": ""
        },
        "pois": [],
        "roads": [],
        "poiRegions": [],
        "sematic_description": "",
        "cityCode": 315
    }
}

从以上返回的数据来看,主要由以下字段构成:

  • status:返回结果状态值,为0表示成功,返回其他表示失败。
  • location:解析完成地址的坐标(lat,纬度值;lng,经度值)。
  • formatted_address:解析后的结构化地址信息(接口核心返回字段)。
  • business:坐标所在商圈信息,如 “人民大学,中关村,苏州街”。最多返回3个。
  • addressComponent:坐标所属于行政区域的描述,此字段下包含多个子字段对多数不同等级的区域进行描述如:所属国家,所属省份,所属城市等等。

POI信息召回

通过以上参数可以实现将经纬度坐标转换为结构化地址信息的功能,但逆编码接口中还提供召回坐标点附近POI信息的功能,想要实现此功能可通过添加如下参数实现:

在对参数进行说明以前,想对POI进行说明一下,第一次使用相关服务的用户可能对POI是什么并不是很清楚:POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。举一个例子我时常会使用一些地图类的软件,当我们想要检索附近的酒店,餐厅等信息时只要输入关键字这些附近的相关地点就是在地图上标注出来,这些标注的点以及其对应的推送信息就是POI信息。想要更加多的了解POI可以通过官方文档进行了解:http://lbs.baidu.com/index.php?title=iossdk/guide/search/poi

在逆地理编码服务中想要实现此功能可通过添加以下参数实现:

  • extensions_poi:可选值0和1(默认为0),此参数是是否返回POI信息的关键参数,设置为0或不添加,不召回pois数据。设置为1,返回pois数据,默认显示周边1000米内的poi。
  • radius:poi信息召回半径,允许设置区间为0-1000米,超过1000米按1000米召回。
  • poi_types:可以选择召回指定类别的POI信息,例如poi_types=酒店,如想召回多个POI类型数据,可以用 “|” 分割例如 “poi_types=酒店|房地产” ,不添加该参数则默认召回全部POI分类数据。关于具体的POI分类可参考官方给定的文档:http://lbsyun.baidu.com/index.php?title=lbscloud/poitags

Postman接口请求测试

在这里插入图片描述
测试请求链接

http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=gcj02ll&location=32.02145204694694,118.78883097446304&ret_coordtype=gcj02ll&extensions_poi=1&poi_types=旅游景点&radius=500&ak=你的ak

请求返回的JSON格式数据

{“status”:0,“result”:{“location”:{“lng”:118.7888305377931,“lat”:32.02145301001839},“formatted_address”:“江苏省南京市秦淮区贡院西街53号”,“business”:“建康路,夫子庙,水游城”,“addressComponent”:{“country”:“中国”,“country_code”:0,“country_code_iso”:“CHN”,“country_code_iso2”:“CN”,“province”:“江苏省”,“city”:“南京市”,“city_level”:2,“district”:“秦淮区”,“town”:"",“town_code”:"",“adcode”:“320104”,“street”:“贡院西街”,“street_number”:“53号”,“direction”:“附近”,“distance”:“5”},“pois”:[{“addr”:“南京市秦淮区贡院西街53号”,“cp”:"",“direction”:“内”,“distance”:“0”,“name”:“夫子庙秦淮风光带”,“poiType”:“旅游景点”,“point”:{“x”:118.78955242194317,“y”:32.01989067811831},“tag”:“旅游景点;其他”,“tel”:"",“uid”:“b54862235dba4c0bcbe33c30”,“zip”:"",“parent_poi”:{“name”:“夫子庙”,“tag”:“旅游景点;风景区”,“addr”:“江苏省南京市秦淮区贡院西街53号”,“point”:{“x”:118.78885841852112,“y”:32.020708765813818},“direction”:“北”,“distance”:“97”,“uid”:“5e25f7ddcfa403036140a938”}},{“addr”:“南京市秦淮区贡院西街53号”,“cp”:" “,“direction”:“东北”,“distance”:“50”,“name”:“尊经阁”,“poiType”:“旅游景点”,“point”:{“x”:118.78846175667731,“y”:32.021225603612688},“tag”:“旅游景点;景点”,“tel”:”",“uid”:“3810c8793e36048b9d09f7a9”,“zip”:"",“parent_poi”:{“name”:"",“tag”:"",“addr”:"",“point”:{“x”:0.0,“y”:0.0},“direction”:"",“distance”:"",“uid”:""}},{“addr”:“南京市秦淮区贡院街152号”,“cp”:" “,“direction”:“北”,“distance”:“129”,“name”:“冉耕雕像”,“poiType”:“旅游景点”,“point”:{“x”:118.78912877099899,“y”:32.02049174754419},“tag”:“旅游景点;景点”,“tel”:”",“uid”:“40d18c66a2f3a24aca2915af”,“zip”:"",“parent_poi”:{“name”:“夫子庙秦淮风光带”,“tag”:“旅游景点;其他”,“addr”:“南京市秦淮区贡院西街53号”,“point”:{“x”:118.78955242194317,“y”:32.01989067811831},“direction”:“北”,“distance”:“218”,“uid”:“b54862235dba4c0bcbe33c30”}},{“addr”:“江苏省南京市秦淮区贡院街152”,“cp”:" “,“direction”:“北”,“distance”:“213”,“name”:“天下文枢坊”,“poiType”:“旅游景点”,“point”:{“x”:118.78954339556459,“y”:32.019929026739188},“tag”:“旅游景点;景点”,“tel”:”",“uid”:“f26161a45e097fe88a36ee0b”,“zip”:"",“parent_poi”:{“name”:“夫子庙秦淮风光带”,“tag”:“旅游景点;其他”,“addr”:“南京市秦淮区贡院西街53号”,“point”:{“x”:118.78955242194317,“y”:32.01989067811831},“direction”:“北”,“distance”:“218”,“uid”:“b54862235dba4c0bcbe33c30”}},{“addr”:“贡院街95号(近夫子庙邮局)”,“cp”:" “,“direction”:“西”,“distance”:“215”,“name”:“江南贡院”,“poiType”:“旅游景点”,“point”:{“x”:118.79066796194891,“y”:32.02195397262252},“tag”:“旅游景点;文物古迹”,“tel”:”",“uid”:“381418d12000a880441a32aa”,“zip”:"",“parent_poi”:{“name”:“夫子庙”,“tag”:“旅游景点;风景区”,“addr”:“江苏省南京市秦淮区贡院西街53号”,“point”:{“x”:118.78885841852112,“y”:32.020708765813818},“direction”:“北”,“distance”:“97”,“uid”:“5e25f7ddcfa403036140a938”}},{“addr”:“南京市秦淮区瞻园路128号”,“cp”:" “,“direction”:“东”,“distance”:“413”,“name”:“瞻园”,“poiType”:“旅游景点”,“point”:{“x”:118.78513644724285,“y”:32.02106626127321},“tag”:“旅游景点;风景区”,“tel”:”",“uid”:“161a0ed275bcfc495cd4fe13”,“zip”:"",“parent_poi”:{“name”:"",“tag”:"",“addr”:"",“point”:{“x”:0.0,“y”:0.0},“direction”:"",“distance”:"",“uid”:""}},{“addr”:“南京市秦淮区平江府路58号”,“cp”:" “,“direction”:“西”,“distance”:“339”,“name”:“古秦淮牌坊”,“poiType”:“旅游景点”,“point”:{“x”:118.7918836211123,“y”:32.021561292097398},“tag”:“旅游景点;风景区”,“tel”:”",“uid”:“5c035c7390c589d22b06ced9”,“zip”:"",“parent_poi”:{“name”:“夫子庙秦淮风光带”,“tag”:“旅游景点;其他”,“addr”:“南京市秦淮区贡院西街53号”,“point”:{“x”:118.78955242194317,“y”:32.01989067811831},“direction”:“北”,“distance”:“218”,“uid”:“b54862235dba4c0bcbe33c30”}},{“addr”:“江苏省南京市秦淮区大石坝街150号李香君故居陈列馆内”,“cp”:" “,“direction”:“北”,“distance”:“374”,“name”:“媚香楼”,“poiType”:“旅游景点”,“point”:{“x”:118.78868832106594,“y”:32.018590892843857},“tag”:“旅游景点;景点”,“tel”:”",“uid”:“6660358251a06f06e81e977f”,“zip”:"",“parent_poi”:{“name”:“李香君故居陈列馆”,“tag”:“旅游景点;文物古迹”,“addr”:“大石坝街150号”,“point”:{“x”:118.7889676840719,“y”:32.018343124549357},“direction”:“北”,“distance”:“406”,“uid”:“2733651258c90adb4557264f”}},{“addr”:“建康路1号水游城南侧广场”,“cp”:" “,“direction”:“东南”,“distance”:“438”,“name”:“双眼井”,“poiType”:“旅游景点”,“point”:{“x”:118.78537859088165,“y”:32.023129063516069},“tag”:“旅游景点;风景区”,“tel”:”",“uid”:“c563f85835a783a116c905d1”,“zip”:"",“parent_poi”:{“name”:"",“tag”:"",“addr”:"",“point”:{“x”:0.0,“y”:0.0},“direction”:"",“distance”:"",“uid”:""}}],“roads”:[],“poiRegions”:[{“direction_desc”:“内”,“name”:“夫子庙秦淮风光带”,“tag”:“旅游景点;其他”,“uid”:“b54862235dba4c0bcbe33c30”,“distance”:“0”}],“sematic_description”:“夫子庙秦淮风光带内,尊经阁东北50米”,“cityCode”:315}}

以上返回信息中pois字段中为返回的全部POI信息,抽取一段解析后POI信息为下

 {
                "addr": "南京市秦淮区贡院西街53号",
                "cp": "",
                "direction": "内",
                "distance": "0",
                "name": "夫子庙秦淮风光带",
                "poiType": "旅游景点",
                "point": {
                    "x": 118.78955242194317,
                    "y": 32.01989067811831
                },
                "tag": "旅游景点;其他",
                "tel": "",
                "uid": "b54862235dba4c0bcbe33c30",
                "zip": "",
                "parent_poi": {
                    "name": "夫子庙",
                    "tag": "旅游景点;风景区",
                    "addr": "江苏省南京市秦淮区贡院西街53号",
                    "point": {
                        "x": 118.78885841852112,
                        "y": 32.020708765813818
                    },
                    "direction": "北",
                    "distance": "97",
                    "uid": "5e25f7ddcfa403036140a938"
                }
            }

在这段信息中可以看出对POI的描述非常详细,包括了具体的结构化地址信息,以及对应的经纬度坐标等,其中值得注意的是uid字段,此字段是该poi唯一标识,通过此字段可通过百度地图中其他接口对此POI地址进行操作,例如调用相应的实景图。

更多有关正地理编码接口使用详情可查看官方服务文档:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad

相关百度地图方面博文后面会持续更新,欢迎大家支持。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值