1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //防抖debounce代码:
- export function debounce(fn,delay=500) {
- var timeout = null; // 创建一个标记用来存放定时器的返回值
- return function (e) {
- // 每当用户输入的时候把前一个 setTimeout clear 掉
- clearTimeout(timeout);
- // 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果时间持续触发,就不会执行 fn 函数
- timeout = setTimeout(() => {
- fn.apply(this, arguments);
- }, delay);
- };
- }
- // 返回两个经纬度之间的距离 单位米
- const earthDistance = function (location1, location2) {
- const lat1 = parseFloat(location1.lat);
- const lng1 = parseFloat(location1.lng);
- const lat2 = parseFloat(location2.lat);
- const lng2 = parseFloat(location2.lng);
-
- const EARTH_RADIUS = 6378137.0; //单位M
- const PI = Math.PI;
-
- function getRad(d) {
- return d * PI / 180.0;
- }
-
- let f = getRad((lat1 + lat2) / 2);
- let g = getRad((lat1 - lat2) / 2);
- let l = getRad((lng1 - lng2) / 2);
-
- let sg = Math.sin(g);
- let sl = Math.sin(l);
- let sf = Math.sin(f);
-
- let s, c, w, r, d, h1, h2;
- let a = EARTH_RADIUS;
- let fl = 1 / 298.257;
-
- sg = sg * sg;
- sl = sl * sl;
- sf = sf * sf;
-
- s = sg * (1 - sl) + (1 - sf) * sl;
- c = (1 - sg) * (1 - sl) + sf * sl;
-
- w = Math.atan(Math.sqrt(s / c));
- r = Math.sqrt(s * c) / w;
- d = 2 * w * a;
- h1 = (3 * r - 1) / 2 / c;
- h2 = (3 * r + 1) / 2 / s;
-
- return d * (1 + fl * (h1 * sf * (1 - sg) - h2 * (1 - sf) * sg));
- };
- //rpx转换px px=rpx * (屏幕宽度 / 750)
- export const rpxTopx = function (rpx) {
- let width = uni.getWindowInfo().screenWidth
- let px = rpx *( width / 750 );
- return px
- }
|