// pages/map/map.js // 引入SDK核心类 var QQMapWX = require('../../utils/qqmap-wx-jssdk.js'); // 实例化API核心类 var qqmapsdk = new QQMapWX({ key: 'D3MBZ-LQK6U-IONVC-GJDPK-C43GF-UYFOC' // 必填 }); Page({ /** * 页面的初始数据 */ data: { longitude: 110.277685, latitude: 25.093668, markers: [], polyline: [], }, //在Page({})中使用下列代码 //触发表单提交事件,调用接口 formSubmit(e) { console.log(e.detail.value) var _this = this; //调用距离计算接口 qqmapsdk.direction({ mode: 'walking', //可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行),不填默认:'driving',可不填 //from参数不填默认当前地址 from: e.detail.value.start, to: e.detail.value.dest, success: function (res) { console.log('1111'); console.log(res.result.routes[0]); var ret = res; var coors = ret.result.routes[0].polyline, pl = [{ latitude: e.detail.value.start.split(",")[0], longitude: e.detail.value.start.split(",")[1] }]; //坐标解压(返回的点串坐标,通过前向差分进行压缩) var kr = 1000000; for (var i = 2; i < coors.length; i++) { coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr; } //将解压后的坐标放入点串数组pl中 for (var i = 0; i < coors.length; i += 2) { pl.push({ latitude: coors[i], longitude: coors[i + 1] }) } pl.push({ latitude: e.detail.value.dest.split(",")[0], longitude: e.detail.value.dest.split(",")[1] }) console.log(pl) //设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点 _this.setData({ polyline: [{ points: pl, color: '#449CF7', width: 4, borderWidth: 2, arrowLine: true }] }) _this.includePoints() }, fail: function (error) { console.error(error); }, complete: function (res) { // console.log(res); } }); this.setData({ markers: [{ id: 0, latitude: e.detail.value.start.split(",")[0], longitude: e.detail.value.start.split(",")[1], iconPath: "https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/start.png", width: 25, height: 37, callout: { content: " " + "当前位置" + " ", fontSize: 16, display: 'ALWAYS', padding: 10, borderRadius: 6, color: '#04358D' } }, { id: 1, latitude: e.detail.value.dest.split(",")[0], longitude: e.detail.value.dest.split(",")[1], iconPath: "https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/end.png", width: 25, height: 37, callout: { content: " " + "目的地" + " ", fontSize: 16, display: 'ALWAYS', padding: 10, borderRadius: 6, color: '#04358D' }, } ] }) }, includePoints() { var points = Array.from(this.data.polyline[0].points) this.mapCtx = wx.createMapContext('map') this.mapCtx.includePoints({ padding: [100, 40, 20, 40], points: points, }) } })