腾讯位置商业授权微信小程序距离计算
微信小程序JavaScript SDK 距离计算
产品通知
由于 /ws/distance/v1 接口已逐步下线,后续不再进行维护,建议您通过WebService API接口的距离矩阵实现相关需求,接入方法请参考微信小程序中使用服务API
calculateDistance(options:Object)
计算一个点到多点的步行、驾车距离。
注:坐标系采用gcj02坐标系
options属性说明
新增直线距离计算,‘straight’(直线)直线距离计算适用于 jssdkv1.1 jssdkv1.2
①String格式:lat,lng(例:from: ‘39.984060,116.307520’)
②Object格式:
{
latitude: 纬度,
longitude: 经度
}
(例:from: {
latitude: 39.984060,
longitude: 116.307520
})
默认是当前位置
①String格式:lat,lng;lat,lng… (经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
(例:to: ‘39.984060,116.307520;39.984060,116.507520’)
②Object格式1:
[{
latitude: 纬度,
longitude: 经度
}, …]
(例:to:[{
latitude:39.984060,
longitude:116.307520
},…])
③Objec格式2:
此格式主要对应search返回的数据结构格式,方便开发这批量转换
[{
location: {
lat: 纬度,
lng: 经度
}
}, …]
(例:to:[{
location:{
lat:39.984060,
lng:116.307520
}
},…])
开启WebServiceAPI签名校验的必传参数,只需要传入生成的SK字符串即可,不需要进行MD5加密操作
该参数适用于 jssdkv1.1 jssdkv1.2
调用结果
通过属性success, fail, complete的回调参数来接收调用结果
success的回调参数可以有2个,第1个参数接收调用结果,第2个参数控制返回处理后的数据(非必须参数),示例:success:function(res,data)
该属性适用于 jssdkv1.1 jssdkv1.2
310请求参数信息有误,
311Key格式错误,
306请求有护持信息请检查字符串,
110请求来源未被授权
如:
status为0,message为\"query ok\",为正常,
status为310,message为\"请求参数信息有误\",
status为311,message为\"key格式错误\",
status为306,message为\"请求有护持信息请检查字符串\",
status为110,message为\"请求来源未被授权\"
如果radius半径过小或者无法搜索到,则返回-1
注:步行方式不计算耗时,该值始终为0
示例
WXML 模板文件中添加map组件,并绑定markers数据:
<view wx:for=\"{{distance}}\" wx:key=\"index\"> 起点到终点{{index+1}}的步行距离为{{item}}米
Javascript 关键代码片段:
// 引入SDK核心类var QQMapWX = require(\'xxx/qqmap-wx.js\'); // 实例化API核心类var qqmapsdk = new QQMapWX({ key: \'开发密钥(key)\' // 必填}); //在Page({})中使用下列代码Page({ data: { distance: [], }, //事件触发,调用接口 formSubmit(e){ var _this = this; //调用距离计算接口 qqmapsdk.calculateDistance({ //mode: \'driving\',//可选值:\'driving\'(驾车)、\'walking\'(步行),不填默认:\'walking\',可不填 //from参数不填默认当前地址 //获取表单提交的经纬度并设置from和to参数(示例为string格式) from: e.detail.value.start || \'\', //若起点有数据则采用起点坐标,若为空默认当前地址 to: e.detail.value.dest, //终点坐标 success: function(res) {//成功后的回调 console.log(res); var res = res.result; var dis = []; for (var i = 0; i < res.elements.length; i++) { dis.push(res.elements[i].distance); //将返回数据存入dis数组, } _this.setData({ //设置并更新distance数据 distance: dis }); }, fail: function(error) { console.error(error); }, complete: function(res) { console.log(res); } }); }})
接口调用说明
calculateDistance(options:Object)方法调用接口服务如下:
- /ws/distance/v1 距离计算:步行
- /ws/distance/v1 距离计算:驾车
注:微信小程序JavaScript SDK通过对腾讯位置服务WebServiceAPI接口进行封装而形成,因此和直接调用WebSerivceAPI的限制是等同的,
具体可参考:腾讯位置服务WebServiceAPI配额及使用限制
资料来源:
腾讯位置商业授权微信小程序距离计算-腾讯地图代理商