MaterialFlow.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // pages/map/map.js
  2. // 引入SDK核心类
  3. var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
  4. // 实例化API核心类
  5. var qqmapsdk = new QQMapWX({
  6. key: 'D3MBZ-LQK6U-IONVC-GJDPK-C43GF-UYFOC' // 必填
  7. });
  8. Page({
  9. /**
  10. * 页面的初始数据
  11. */
  12. data: {
  13. longitude: 110.277685,
  14. latitude: 25.093668,
  15. markers: [],
  16. polyline: [],
  17. },
  18. //在Page({})中使用下列代码
  19. //触发表单提交事件,调用接口
  20. formSubmit(e) {
  21. console.log(e.detail.value)
  22. var _this = this;
  23. //调用距离计算接口
  24. qqmapsdk.direction({
  25. mode: 'walking', //可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行),不填默认:'driving',可不填
  26. //from参数不填默认当前地址
  27. from: e.detail.value.start,
  28. to: e.detail.value.dest,
  29. success: function (res) {
  30. console.log('1111');
  31. console.log(res.result.routes[0]);
  32. var ret = res;
  33. var coors = ret.result.routes[0].polyline,
  34. pl = [{
  35. latitude: e.detail.value.start.split(",")[0],
  36. longitude: e.detail.value.start.split(",")[1]
  37. }];
  38. //坐标解压(返回的点串坐标,通过前向差分进行压缩)
  39. var kr = 1000000;
  40. for (var i = 2; i < coors.length; i++) {
  41. coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
  42. }
  43. //将解压后的坐标放入点串数组pl中
  44. for (var i = 0; i < coors.length; i += 2) {
  45. pl.push({
  46. latitude: coors[i],
  47. longitude: coors[i + 1]
  48. })
  49. }
  50. pl.push({
  51. latitude: e.detail.value.dest.split(",")[0],
  52. longitude: e.detail.value.dest.split(",")[1]
  53. })
  54. console.log(pl)
  55. //设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点
  56. _this.setData({
  57. polyline: [{
  58. points: pl,
  59. color: '#449CF7',
  60. width: 4,
  61. borderWidth: 2,
  62. arrowLine: true
  63. }]
  64. })
  65. _this.includePoints()
  66. },
  67. fail: function (error) {
  68. console.error(error);
  69. },
  70. complete: function (res) {
  71. // console.log(res);
  72. }
  73. });
  74. this.setData({
  75. markers: [{
  76. id: 0,
  77. latitude: e.detail.value.start.split(",")[0],
  78. longitude: e.detail.value.start.split(",")[1],
  79. iconPath: "https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/start.png",
  80. width: 25,
  81. height: 37,
  82. callout: {
  83. content: " " + "当前位置" + " ",
  84. fontSize: 16,
  85. display: 'ALWAYS',
  86. padding: 10,
  87. borderRadius: 6,
  88. color: '#04358D'
  89. }
  90. },
  91. {
  92. id: 1,
  93. latitude: e.detail.value.dest.split(",")[0],
  94. longitude: e.detail.value.dest.split(",")[1],
  95. iconPath: "https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/end.png",
  96. width: 25,
  97. height: 37,
  98. callout: {
  99. content: " " + "目的地" + " ",
  100. fontSize: 16,
  101. display: 'ALWAYS',
  102. padding: 10,
  103. borderRadius: 6,
  104. color: '#04358D'
  105. },
  106. }
  107. ]
  108. })
  109. },
  110. includePoints() {
  111. var points = Array.from(this.data.polyline[0].points)
  112. this.mapCtx = wx.createMapContext('map')
  113. this.mapCtx.includePoints({
  114. padding: [100, 40, 20, 40],
  115. points: points,
  116. })
  117. }
  118. })