产品通知
由于 /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)

        该属性适用于 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 计算结果
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配额及使用限制

这篇文章对您解决问题是否有帮助?

已解决
未解决