helper.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. const getDistance = function(lat1, lng1, lat2, lng2) {
  2. let rad = Math.PI / 180.0;
  3. var radLat1 = lat1 * rad;
  4. var radLat2 = lat2 * rad;
  5. var a = radLat1 - radLat2;
  6. var b = lng1 * rad - lng2 * rad;
  7. var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
  8. Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  9. s = s * 6378.137; // EARTH_RADIUS;
  10. s = Math.round(s * 10000) / 10000; //输出为公里
  11. s = s.toFixed(2); //保留2位小数
  12. return s;
  13. }
  14. //计算矩形范围,最长角是不对的不过能满足基本需求 半径的单位是M
  15. const getRectangle = function(lat, lng, radius) {
  16. let deg = 2 * Math.PI * 6378137 / 360.0; //地球周长 每一度的距离 2πR
  17. let dpmLat = 1 / deg;
  18. let radiusLat = dpmLat * radius;
  19. let minLat = lat - radiusLat;
  20. let maxLat = lat + radiusLat;
  21. let mpdLng = deg * Math.cos(lat * (3.141592653 / 180))
  22. let dpmLng = 1 / mpdLng;
  23. let radiusLng = dpmLng * radius;
  24. let minLng = lng - radiusLng; // 最小经度
  25. let maxLng = lng + radiusLng; // 最大经度
  26. return {
  27. minLat: minLat,
  28. maxLat: maxLat,
  29. minLng: minLng,
  30. maxLng: maxLng
  31. };
  32. }
  33. const djsFull = function(t) {
  34. var d = Math.floor(t / 86400);
  35. var h = Math.floor(t % 86400 / 3600);
  36. var m = Math.floor(t % 3600 / 60);
  37. var s = Math.floor(t % 60);
  38. return {
  39. d: this.addzero(d),
  40. h: this.addzero(h),
  41. m: this.addzero(m),
  42. s: this.addzero(s)
  43. }
  44. }
  45. //m {y:2020,m:8,month:'08'}
  46. const upMonth = function(m){
  47. let _m = parseInt(m.m) - 1;
  48. let _y = parseInt(m.y);
  49. if(_m == 0){
  50. _y = _y - 1;
  51. _m = 12;
  52. }
  53. return {
  54. y:_y,
  55. m:this.addzero(_m)
  56. }
  57. }
  58. const downMonth = function(m){
  59. let _m = parseInt(m.m) + 1;
  60. let _y = parseInt(m.y);
  61. if(_m == 13){
  62. _y = _y+1;
  63. _m = 1;
  64. }
  65. return {
  66. y:_y,
  67. m:this.addzero(_m)
  68. }
  69. }
  70. const getTimeArr = function(day) {
  71. let date1 = new Date();
  72. let date2 = new Date(date1);
  73. day = day ? day : 0;
  74. date2.setDate(date1.getDate() + day);
  75. let y = date2.getFullYear();
  76. let m = date2.getMonth() + 1;
  77. let d = date2.getDate();
  78. let h = date2.getHours();
  79. let i = date2.getMinutes();
  80. let s = date2.getSeconds();
  81. let dt = '上午';
  82. if(h >=9 && h<=11){
  83. dt = '上午';
  84. }else if(h <9 && h>5){
  85. dt = '早上';
  86. }else if(h>11 && h<14){
  87. dt = '中午';
  88. }else if(h>=14 && h<18){
  89. dt = '下午';
  90. }else{
  91. dt = '晚上';
  92. }
  93. let w = date2.getDay();
  94. switch (w) {
  95. case 1:
  96. w = '星期一';
  97. break;
  98. case 2:
  99. w = '星期二';
  100. break;
  101. case 3:
  102. w = '星期三';
  103. break;
  104. case 4:
  105. w = '星期四';
  106. break;
  107. case 5:
  108. w = '星期五';
  109. break;
  110. case 6:
  111. w = '星期六';
  112. break;
  113. case 0:
  114. w = '星期日';
  115. break;
  116. }
  117. return {
  118. y: y,
  119. m: this.addzero(m),
  120. d: this.addzero(d),
  121. h: this.addzero(h),
  122. i: this.addzero(i),
  123. s: this.addzero(s),
  124. w: w,
  125. t: dt
  126. }
  127. }
  128. const datetimeToUnix = function(str) {
  129. var _arr = str.split(' ');
  130. var _day = _arr[0].split('-');
  131. _arr[1] = (_arr[1] == null) ? '0:0:0' : _arr[1];
  132. var _time = _arr[1].split(':');
  133. for (var i = _day.length - 1; i >= 0; i--) {
  134. _day[i] = isNaN(parseInt(_day[i])) ? 0 : parseInt(_day[i]);
  135. }
  136. for (var i = _time.length - 1; i >= 0; i--) {
  137. _time[i] = isNaN(parseInt(_time[i])) ? 0 : parseInt(_time[i]);
  138. }
  139. _time[2] = 0;
  140. var _temp = new Date(_day[0], _day[1] - 1, _day[2], _time[0], _time[1], _time[2]);
  141. return _temp.getTime() / 1000;
  142. }
  143. const unixToDatetime = function(format, time) {
  144. var _temp = (time != null) ? new Date(time * 1000) : new Date();
  145. var _return = '';
  146. if (/Y-m-d/.test(format)) {
  147. var _day = [_temp.getFullYear(), this.addzero(1 + _temp.getMonth()), this.addzero(_temp.getDate())];
  148. _return = _day.join('-');
  149. }
  150. if (/H:i:s/.test(format)) {
  151. var _time = [this.addzero(_temp.getHours()), this.addzero(_temp.getMinutes()), this.addzero(_temp.getSeconds())];
  152. _return += ' ' + _time.join(':');
  153. }
  154. return _return;
  155. }
  156. const addzero = function(i) {
  157. if (i <= 9) {
  158. return '0' + i;
  159. } else {
  160. return i;
  161. }
  162. }
  163. export default {
  164. getDistance,
  165. getRectangle,
  166. djsFull,
  167. getTimeArr,
  168. datetimeToUnix,
  169. unixToDatetime,
  170. addzero,
  171. upMonth,
  172. downMonth
  173. }