腾讯位置 - 逆地址解析(结尾附视频)

简介: 腾讯位置 - 逆地址解析(结尾附视频)

一、功能介绍

逆地址解析接口可以提供由坐标到坐标所在位置的文字描述的转换,并可以返回地理位置信息和附近POI列表,返回的数据中包含丰富的信息。

二、密钥申请

1. 用户登录

打开腾讯位置服务主页:https://lbs.qq.com,点击右上角的登录按钮:

2. 验证信息

点击控制台,进入个人中心 -> 我的信息完成验证。

3. 申请密钥

点击左侧应用管理下的我的应用

点击创建应用,填写应用名称,选择应用类型

创建成功后,可以在管理界面查看到密钥信息:

4. 密钥配置

密钥申请通过后,可以点击编辑按钮添加描述,并可以选择启用的产品,以及对调用规则进行限制:

同时,可以在配额管理 -> 我的额度查看各接口的用量情况:

三、操作步骤

1. 开发文档入口

滑动到上方菜单的开发文档 -> 选择服务端下的WebService API

点击左侧的逆地址解析(坐标位置描述)

直达地址:https://lbs.qq.com/service/webService/webServiceGuide/webServiceGcoder

2. 接口测试

可以直接使用Postman工具来测试,或者使用Postwomen(Postman他女朋友,唉,连工具都成双入对了,写个代码都要被虐,罢了,好好打工)。

由文档可知,接口的请求类型为GET,默认的数据返回格式为JSON。必填参除了开发者密钥还有location字段。

3. 返回结果

接口的返回包括转换后的各级详细信息,如果开启周边信息(使用get_poi参数)则还会返回一个POI数组,在使用时可以提取出较为丰富的信息。

{
    "status": 0,
    "message": "query ok",
    "request_id": "3105df40-615b-11eb-8a15-525400330ffb",
    "result": {
        "location": {
            "lat": 39.907893,
            "lng": 116.396885
        },
        "address": "北京市东城区东长安街",
        "formatted_addresses": {
            "recommend": "天安门南",
            "rough": "天安门南"
        },
        "address_component": {
            "nation": "中国",
            "province": "北京市",
            "city": "北京市",
            "district": "东城区",
            "street": "东长安街",
            "street_number": "东长安街"
        },
        "ad_info": {
            "nation_code": "156",
            "adcode": "110101",
            "city_code": "156110000",
            "name": "中国,北京市,北京市,东城区",
            "location": {
                "lat": 39.916668,
                "lng": 116.434578
            },
            "nation": "中国",
            "province": "北京市",
            "city": "北京市",
            "district": "东城区"
        },
        "address_reference": {
            "street_number": {
                "id": "",
                "title": "",
                "location": {
                    "lat": 39.907883,
                    "lng": 116.407722
                },
                "_distance": 1,
                "_dir_desc": ""
            },
            "crossroad": {
                "id": "640275",
                "title": "东长安街/西长安街(路口)",
                "location": {
                    "lat": 39.907681,
                    "lng": 116.395714
                },
                "_distance": 97.6,
                "_dir_desc": "东"
            },
            "town": {
                "id": "110101001",
                "title": "东华门街道",
                "location": {
                    "lat": 39.923271,
                    "lng": 116.396828
                },
                "_distance": 0,
                "_dir_desc": "内"
            },
            "street": {
                "id": "5138301611741736025",
                "title": "东长安街",
                "location": {
                    "lat": 39.907883,
                    "lng": 116.407722
                },
                "_distance": 1,
                "_dir_desc": ""
            },
            "landmark_l2": {
                "id": "15103389097764433256",
                "title": "天安门",
                "location": {
                    "lat": 39.908821,
                    "lng": 116.397469
                },
                "_distance": 28.1,
                "_dir_desc": "南"
            }
        }
    }
}

四、使用案例

在直接调用接口的时候来获取数据是比较简单的。如果希望在地图上滑动查看后,直接显示相关信息(包括地址及坐标),可以先自己模拟一个坐标拾取器,实时获取坐标点,然后再调用接口查询地址信息。

没接触过地图构建的小伙伴可以进入传送门:腾讯位置 - 地图构建入门(结尾附视频)

1. 地图坐标拾取

首先构建一个基本的地图,并绑定鼠标滑动事件,能够将当前对应的坐标信息直接标记在地图上,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css">
      #container {
        /*地图(容器)显示大小*/
        width: 800px;
        height: 400px;
      }
    </style>
    <!--引入所需的jquery库文件-->
    <script src="js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
    <!--引入Javascript API GL,参数说明参见下文-->
    <script src="https://map.qq.com/api/gljs?v=1.exp&key=替换为自己的key"></script>
    <script>
      //定义初始中心点坐标
      var center = new TMap.LatLng(40.046394, 116.285335);
      //定义全局变量map
      var map;
      //地图初始化函数
      function initMap() {
        //调用 TMap.Map() 构造函数创建地图
        map = new TMap.Map(document.getElementById('container'), {
          center: center, //设置地图中心点坐标
          zoom: 17, //设置地图缩放级别
          pitch: 43.5, //设置俯仰角
          rotation: 45 //设置地图旋转角度
        });
      }
      // 页面加载完成后执行
      $(function() {
        //初始化显示地图
        initMap();
        //初始化label
        var label = new TMap.MultiLabel({
          id: 'label-layer',
          map: map,
          styles: {//样式可以进行自定义
            'label': new TMap.LabelStyle({
              'color': '#3777FF', //颜色属性
              'size': 20, //文字大小属性
              'offset': {
                x: 0,
                y: 0
              }, //文字偏移属性单位为像素
              'angle': 0, //文字旋转属性
              'alignment': 'center', //文字水平对齐属性
              'verticalAlignment': 'middle' //文字垂直对齐属性
            })
          }
        });
        //定义事件处理方法
        var mousemoveHandler = function(evt) {
          var lat = evt.latLng.getLat().toFixed(6);
          var lng = evt.latLng.getLng().toFixed(6);
          label.updateGeometries([{
            'id': 'label_1', //点图形数据的标志信息
            'styleId': 'label', //样式id
            'position': new TMap.LatLng(lat, lng), //标注点位置
            'content': lat + ',' + lng //标注文本
          }]);
        }
        var mouseleaveHandler = function(evt) {
          label.remove(['label_1']);
        }
        var clickHandler = function(evt){
          var lat = evt.latLng.getLat().toFixed(6);
          var lng = evt.latLng.getLng().toFixed(6);
          //此处调用接口查询数据,在地图上进行文本标记
        }
        //Map实例创建后,通过on方法绑定点击事件
        map.on("mousemove", mousemoveHandler);
        map.on("click",clickHandler);
        //鼠标移出地图区域后清除label
        $("#container").on("mouseleave", mouseleaveHandler);
      });
    </script>
  </head>
  <body>
    <!-- 定义地图显示容器 -->
    <div id="container"></div>
  </body>
</html>

效果:

2. 位置点击查询

接下来补全点击事件,在调试完成后,如果不需要实时显示坐标,可以移除鼠标滑动事件

var clickHandler = function(evt){
          var lat = evt.latLng.getLat().toFixed(6);
          var lng = evt.latLng.getLng().toFixed(6);
          //此处调用接口查询数据,在地图上进行文本标记
          $.ajax({
            url:"https://apis.map.qq.com/ws/geocoder/v1/",
            type:"get",
            dataType:"json",
            data:{
              "key":"替换为自己的key",
              "location":lat + "," + lng
            },success:function(resp){
              //在地图上放置另一个标记,注意区分id
              label.updateGeometries([{
                'id': 'label_2', //点图形数据的标志信息
                'styleId': 'label', //样式id
                'position': new TMap.LatLng(lat, lng), //标注点位置
                'content': resp.result.address//标注文本
              }]);
            }
          });
        }

效果如下:

移除鼠标滑动事件后:

本例中只是用了返回数据中的address作为显示信息,具体效果可以进一步调整。

3. 完整案例源码

五、视频直达


腾讯位置 - 逆地址解析

写在结尾:作者力求做到将每个知识点细化,并且对于有关联的知识点都会使用传送门挂载链接。文章采用:“文字 + 配图 + 视频”的方式来进行展现,均是挤时间所作,希望看到这里能留下评论点个赞,略表支持!

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 编解码
哲学家解析Sora本质,AI视频离世界模拟器还有多远?
【2月更文挑战第24天】哲学家解析Sora本质,AI视频离世界模拟器还有多远?
29 2
哲学家解析Sora本质,AI视频离世界模拟器还有多远?
|
6月前
|
数据采集 Python
Python和BeautifulSoup库的魔力:解析TikTok视频页面
短视频平台如TikTok已成为信息传播和电商推广的重要渠道。用户通过短视频分享生活、创作内容,吸引了数以亿计的观众,为企业和创作者提供了广阔的市场和宣传机会。然而,要深入了解TikTok上的视频内容以及用户互动情况,需要借助爬虫技术。本文将介绍如何使用Python和BeautifulSoup库解析TikTok视频页面,并通过统计分析视频信息,帮助您更好地利用这一重要渠道。
Python和BeautifulSoup库的魔力:解析TikTok视频页面
|
18天前
|
数据采集 开发者 Python
使用urllib和BeautifulSoup解析网页中的视频链接
使用urllib和BeautifulSoup解析网页中的视频链接
|
2月前
|
存储 编解码 算法
【解码与渲染 异常情况】深入解析视频中绿色竖线现象(二)
【解码与渲染 异常情况】深入解析视频中绿色竖线现象
38 1
|
3月前
|
JavaScript 前端开发 区块链
最新视频连接解析地址
最新视频连接解析地址
29 0
|
4月前
|
JSON fastjson 数据库
字符编码导致Rapidjson(腾讯开源的json解析库)到Fastjson(阿里开发的Java json解析库)转换失败的原因分析
最近在客户端的开发的过程中,使用到了RapidJson,公司的开发是客户端和数据库端都由不同的人进行开发,我负责的客户端的逻辑开发(使用c++),开发工具同时使用了VS2017和QT的编译环境,使用QT主要是为了客户端界面开发方便,而使用了VS环境主要是维护公司开发的数据库接口库,这个库的唯一作用就是作为一个中间桥梁,使用Rapidjson将数据库接口的json数据格式解析为结构体数据,从而在客户端界面进行展示,或者接收客户端的数据,使用Rapidjson将其转换为json数据,发送给数据库接口以保存数据使用 。不太明白的可以参考我上一篇文章说明Rapidjson的使用过程-Parse解析数组
57 0
|
5月前
|
数据采集 存储 JavaScript
提升数据采集技能:用 Axios 实现的 Twitter 视频下载器全面解析
Twitter上的视频内容丰富多样,涵盖了新闻、娱乐、教育、体育等各个领域。这些视频内容对于数据科学家来说,是一种有价值的数据形式,可以用于进行内容分析、情感分析、话题挖掘、事件检测等多种任务。然而,Twitter标准API并没有提供直接下载视频的功能,这给数据采集带来了一定的困难。为了克服这一挑战,我们将使用Axios库,结合代理IP技术,构建一个高效的视频下载器。
提升数据采集技能:用 Axios 实现的 Twitter 视频下载器全面解析
|
9月前
|
机器学习/深度学习 数据采集 人工智能
详细解析python视频选择--【思维导图知识范围】
详细解析python视频选择--【思维导图知识范围】 CSDN 转过来的,所以格式与内容有些许错误请见谅
|
9月前
|
缓存 小程序 前端开发
详细解析黑马微信小程序视频--【思维导图知识范围】
详细解析黑马微信小程序视频--【思维导图知识范围】 CSDN 转过来的,所以格式与内容有些许错误请见谅
详细解析黑马微信小程序视频--【思维导图知识范围】
|
10月前
|
搜索推荐 数据可视化 JavaScript
数据可视化大屏百度地图绘制行政区域标注实战案例解析(个性化地图、标注、视频、控件、定位、检索)
数据可视化大屏百度地图绘制行政区域标注实战案例解析(个性化地图、标注、视频、控件、定位、检索)
133 1

推荐镜像

更多