qqmap.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const QQMapWX = require("./qqmap-wx-jssdk.js");
  2. const req = require("./request.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. req.setStorage('loctionAddressMap', res.result);
  58. success.call(this, res.result);
  59. },
  60. fail: function (error) {
  61. console.error(error);
  62. success.call(this, false);
  63. },
  64. complete: function (res) {
  65. // console.log(res);
  66. }
  67. });
  68. };
  69. module.exports = {
  70. initMap: initMap,
  71. geocoder: geocoder,
  72. calculateDistance: calculateDistance,
  73. calculate: calculate,
  74. reverseGeocoder: reverseGeocoder
  75. };