产品通知
由于 /ws/distance/v1 接口已逐步下线,后续不再进行维护,建议您通过WebService API接口的距离矩阵实现相关需求,接入方法请参考微信小程序中使用服务API
calculateDistance(options:Object)
计算一个点到多点的步行、驾车距离。
注:坐标系采用gcj02坐标系
options属性说明
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
mode | String | 否 | 可选值:‘driving’(驾车)、‘walking’(步行),默认:'walking’新增直线距离计算,‘straight’(直线)直线距离计算适用于 jssdkv1.1 jssdkv1.2 |
from | StringIObject | 是 | 位置坐标,①String格式:lat<纬度>,lng<经度>(例:from: ‘39.984060,116.307520’)②Object格式:{ latitude: 纬度, longitude: 经度 } (例:from: { latitude: 39.984060,longitude: 116.307520})默认是当前位置 |
to | StringIObject | 是 | 终点坐标,①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}},…]) |
sig | String | 否 | 签名校验开启WebServiceAPI签名校验的必传参数,只需要传入生成的SK字符串即可,不需要进行MD5加密操作该参数适用于 jssdkv1.1 jssdkv1.2 |
调用结果
通过属性success, fail, complete的回调参数来接收调用结果
success的回调参数可以有2个,第1个参数接收调用结果,第2个参数控制返回处理后的数据(非必须参数),示例:success:function(res,data)
名称 | 类型 | 说明 | |||
---|---|---|---|---|---|
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 | 计算结果 | |||
elements | array | 结果数组 | |||
from | object | 起点坐标 | |||
lat | number | 纬度 | |||
lng | number | 经度 | |||
to | object | 终点坐标 | |||
lat | number | 纬度 | |||
lng | number | 经度 | |||
distance | number | 起点到终点的距离,单位:米,如果radius半径过小或者无法搜索到,则返回-1 | |||
duration | number | 表示从起点到终点的结合路况的时间,秒为单位注:步行方式不计算耗时,该值始终为0 |
示例
WXML 模板文件中添加map组件,并绑定markers数据:
<!--form表单-->
<form bindsubmit="formSubmit">
<!--输入起点和终点经纬度坐标,格式为string格式-->
<label>起点坐标:
<input style="border:1px solid #000;" name="start"></input>
</label>
<!--多个终点位置示例:39.984060,116.307520;39.984060,116.507520-->
<label>终点坐标:
<input style="border:1px solid #000;" name="dest"></input>
</label>
<!--提交表单数据-->
<button form-type="submit">计算距离</button>
</form>
<!--渲染起点经纬度到终点经纬度距离,单位为米-->
<view wx:for="{{distance}}" wx:key="index">
<view>起点到终点{{index+1}}的步行距离为{{item}}米</view>
</view>
Javascript 关键代码片段:
// 引入SDK核心类
var QQMapWX = require('xxx/qqmap-wx.js');
// 实例化API核心类
var qqmapsdk = new QQMapWX({
key: '开发密钥(key)' // 必填
});
//在Page({})中使用下列代码
//事件触发,调用接口
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配额及使用限制
这篇文章对您解决问题是否有帮助?
已解决
未解决