腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)

微信小程序JavaScript SDK

开发指南

逆地址解析(坐标位置描述)

reverseGeocoder(options:Object)

本接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。

注:坐标系采用gcj02坐标系

options属性说明

属性 类型 必填 说明
location StringIObject 位置坐标, ①String格式:lat<纬度>,lng<经度>(例:location: '39.984060,116.307520') ②Object格式: { latitude: 纬度, longitude: 经度 } (例:location: { latitude: 39.984060, longitude: 116.307520 }) 默认是当前位置
coord_type Number 输入的locations的坐标类型,可选值为[1,6]之间的整数,每个数字代表的类型说明: 1 GPS坐标 2 sogou经纬度 3 baidu经纬度 4 mapbar经纬度 5 [默认]腾讯、google、高德坐标 6 sogou墨卡托
get_poi Number 是否返回周边POI列表: 1.返回;0不返回(默认)
poi_options String 用于控制Poi列表: 1 poi_options=address_format=short 返回短地址,缺省时返回长地址 2 poi_options=radius=5000 半径,取值范围 1-5000(米) 3 poi_options=policy=1/2/3 控制返回场景, policy=1[默认] 以地标+主要的路+近距离poi为主,着力描述当前位置; policy=2 到家场景:筛选合适收货的poi,并会细化收货地址,精确到楼栋; policy=3 出行场景:过滤掉车辆不易到达的POI(如一些景区内POI),增加道路出路口、交叉口、大区域出入口类POI,排序会根据真实API大用户的用户点击自动优化。 多个参数之间用分号分隔,示例: poi_options: "address_format=short;radius=300;policy=1"
sig String 签名校验 开启WebServiceAPI签名校验的必传参数,只需要传入生成的SK字符串即可,不需要进行MD5加密操作 该参数适用于 jssdkv1.2

调用结果

通过属性success, fail, complete的回调参数来接收调用结果

success的回调参数可以有2个,第1个参数接收调用结果,第2个参数控制返回处理后的数据(非必须参数),示例:success:function(res,data)

该属性适用于 jssdkv1.1 jssdkv1.2

名称 类型 必填 说明
status number 状态码,0为正常, 310请求参数信息有误, 311Key格式错误, 306请求有护持信息请检查字符串, 110请求来源未被授权
message string 状态说明,即对状态码status进行说明, 如: status为0,message为"query ok",为正常, status为310,message为"请求参数信息有误", status为311,message为"key格式错误", status为306,message为"请求有护持信息请检查字符串", status为110,message为"请求来源未被授权"
result object 逆地址解析结果
address string 地址描述
formatted_addresses object 位置描述
recommend string 经过腾讯地图优化过的描述方式,更具人性化特点
rough string 大致位置,可用于对位置的粗略描述
address_component object 地址部件,address不满足需求时可自行拼接
nation string 国家
province string
city string
district string 区,可能为空字串
street string 街道,可能为空字串
street_number string 门牌,可能为空字串
ad_info object
adcode string 行政区划代码
name string 行政区划名称
location object 行政区划中心点坐标
lat number 纬度
lng number 经度
nation string 国家
province string 省 / 直辖市
city string 市 / 地级区 及同级行政区划
district string 区 / 县级市 及同级行政区划
address_reference object 坐标相对位置参考
famous_area object 知名区域,如商圈或人们普遍认为有较高知名度的区域
title string 名称/标题
location object 坐标
lat number 纬度
lng number 经度
_distance number 此参考位置到输入坐标的直线距离
_dir_desc string 此参考位置到输入坐标的方位关系,如:北、南、内
town object 乡镇街道
title string 名称/标题
location object 坐标
lat number 纬度
lng number 经度
_distance number 此参考位置到输入坐标的直线距离
_dir_desc string 此参考位置到输入坐标的方位关系,如:北、南、内
landmark_l1 object 一级地标,可识别性较强、规模较大的地点、小区等 【注】对象结构同 famous_area
landmark_l2 object 二级地标,较一级地标更为精确,规模更小 【注】:对象结构同 famous_area
street object 街道 【注】:对象结构同 famous_area
street_number object 门牌 【注】:对象结构同 famous_area
crossroad object 交叉路口 【注】:对象结构同 famous_area
water object 水系 【注】:对象结构同 famous_area
pois array POI数组,对象中每个子项为一个POI对象,返回的POI数量及页数可通过请求参数poi_options设置
id string POI唯一标识
title string poi名称
address string 地址
category string POI分类
location object 提示所述位置坐标
id string POI唯一标识
lat number 纬度
lng number 经度
_distance number 该POI到逆地址解析传入的坐标的直线距离

示例

WXML 模板文件中添加组件:

复制代码
<!--地图容器-->
<!--longitude及latitude为设置为调转到指定坐标位置,默认不显示-->
<map id="myMap"
    markers="{{markers}}"
    style="width:100%;height:300px;"
    longitude="{{longitude}}"
    latitude="{{latitude}}" 
    scale='16' 
    show-location>
</map>
<!--form表单-->
<form bindsubmit="formSubmit">
    <!--地址输入框,例:39.984060,116.307520-->
    <input style="border:1px solid #000;" name="reverseGeo"></input>
    <!--提交表单按钮-->
    <button form-type="submit">逆地址解析</button>
</form>
<view>当前位置为:{{address}}</view>

Javascript 关键代码片段:

复制代码
// 引入SDK核心类
var QQMapWX = require('xxx/qqmap-wx.js');
 
// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥(key)' // 必填
});  
 
Page({
  data: {
    markers:[], // 声明markers,存储marker数据
    // 地图展示位置
    latitude: 39.984060,
    longitude: 116.307520,
    address: ""
  },

  // 触发表单提交事件,调用接口
  formSubmit(e) {
    var _this = this;
    qqmapsdk.reverseGeocoder({
      //位置坐标,默认获取当前位置,非必须参数
      /**
       * 
       //Object格式
        location: {
          latitude: 39.984060,
          longitude: 116.307520
        },
      */
      /**
       *
       //String格式
        location: '39.984060,116.307520',
      */
      location: e.detail.value.reverseGeo || '', //获取表单传入的位置坐标,不填默认当前位置,示例为string格式
      //get_poi: 1, //是否返回周边POI列表:1.返回;0不返回(默认),非必须参数
      success: function(res) {//成功后的回调
        console.log(res);
        var res = res.result;
        var mks = [];
        /**
         *  当get_poi为1时,检索当前位置或者location周边poi数据并在地图显示,可根据需求是否使用
         *
            for (var i = 0; i < res.pois.length; i++) {
            mks.push({ // 获取返回结果,放到mks数组中
                title: res.pois[i].title,
                id: res.pois[i].id,
                latitude: res.pois[i].location.lat,
                longitude: res.pois[i].location.lng,
                iconPath: './resources/placeholder.png', //图标路径
                width: 20,
                height: 20
            })
            }
        *
        **/
        //当get_poi为0时或者为不填默认值时,检索目标位置,按需使用
        mks.push({ // 获取返回结果,放到mks数组中
          title: res.address,
          id: 0,
          latitude: res.location.lat,
          longitude: res.location.lng,
          iconPath: './resources/placeholder.png',//图标路径
          width: 20,
          height: 20,
          callout: { //在markers上展示地址名称,根据需求是否需要
            content: res.address,
            color: '#000',
            display: 'ALWAYS'
          }
        });
        _this.setData({ 
          //设置markers属性和地图位置poi,将结果在地图展示
          markers: mks,
          // 修改地图展示位置
          latitude: res.location.lat,
          longitude: res.location.lng,
          // 当前地址
          address: res.address
        });
      },
      fail: function(error) {
        console.error(error);
      },
      complete: function(res) {
        console.log(res);
      }
    })
  }
})

接口调用说明

reverseGeocoder(options:Object)方法调用接口服务如下:

/ws/geocoder/v1 逆地址解析(位置描述)

注:微信小程序JavaScript SDK通过对腾讯位置服务WebServiceAPI接口进行封装而形成,因此和直接调用WebSerivceAPI的限制是等同的,

具体可参考:腾讯位置服务WebServiceAPI配额及使用限制

资料来源:

腾讯位置商业授权微信小程序逆地址解析(坐标位置描述)-腾讯地图代理商

相关推荐
As331001013 小时前
Notepad++ 插件开发实战:从入门到发布全指南
notepad++
两个月菜鸟1 天前
vue+微信小程序五角星
vue.js·微信小程序·notepad++
定偶3 天前
Notepad++插件开发实战
开发语言·数据结构·notepad++
悦人楼3 天前
当C#遇上Notepad++:实现GCode可视化编辑的跨界实践
java·c#·notepad++
learning_tom6 天前
微信小程序功能 表单密码强度验证
notepad++
meng半颗糖9 天前
uniapp 基础(三)
前端·uniapp·notepad++·uniapp基础
learning_tom12 天前
微信小程序中进行参数传递的方法
notepad++
冥王 • 雷利15 天前
Notepad++插件安装
notepad++
韩召华16 天前
uniapp实现微信小程序导航功能
微信小程序·uni-app·notepad++