qqmap.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const req = require("./request.js");
  2. const QQMapWX = require("./qqmap-wx-jssdk.js");
  3. let qqmapsdk;
  4. const initMap = key => {
  5. if (!qqmapsdk) {
  6. qqmapsdk = new QQMapWX({
  7. key: key ? key : req.public.mapLBSKEY
  8. });
  9. }
  10. };
  11. const geocoder = (address, success) => {
  12. //进行地址解析
  13. qqmapsdk.geocoder({
  14. address: address,
  15. success(res) {
  16. if (res.status !== 0) return req.msg(res.message);
  17. // if (res.result.deviation < 0 || res.result.reliability < 7) return req.msg('请输入详细的街道及门牌号');
  18. success.call(this, res.result);
  19. },
  20. fail: function (error) {
  21. console.error(error);
  22. success.call(this, false);
  23. },
  24. complete: function (res) {
  25. // console.log(res);
  26. }
  27. });
  28. }; //计算两点之间的距离默认直线距离
  29. const calculateDistance = (form, to, success, mode) => {
  30. // console.log(form, to);
  31. qqmapsdk.calculateDistance({
  32. mode: mode ? mode : 'straight',
  33. from: form,
  34. to: to,
  35. success(res) {
  36. // console.log(res);
  37. if (res.status !== 0) return req.msg(res.message);
  38. success.call(this, res.result);
  39. }
  40. });
  41. }; //计算是否超出配送距离
  42. const calculate = (form, to, distance, success) => {
  43. calculateDistance(form, to, res => {
  44. if (res.elements[0].distance / 1000 > distance) {
  45. return req.msg('非常抱歉,您的配送地址超出我们的配送服务范围');
  46. } else {
  47. success.call(this);
  48. }
  49. });
  50. };
  51. const reverseGeocoder = (location, success) => {
  52. qqmapsdk.reverseGeocoder({
  53. location: location,
  54. success(res) {
  55. console.log('反地址地理位置数据>>>>>>>==',res);
  56. req.setStorage('loctionAddressMap', res.result.ad_info);
  57. success.call(this, res.result);
  58. },
  59. fail: function (error) {
  60. console.error(error);
  61. success.call(this, false);
  62. },
  63. complete: function (res) {
  64. // console.log(res);
  65. }
  66. });
  67. };
  68. module.exports = {
  69. initMap: initMap,
  70. geocoder: geocoder,
  71. calculateDistance: calculateDistance,
  72. calculate: calculate,
  73. reverseGeocoder: reverseGeocoder
  74. };