jr-util
Version:
这是MJR的JS工具库。定期更新
79 lines (78 loc) • 2.84 kB
JavaScript
var h = 3.141592653589793, v = h * 3e3 / 180, u = 6378245, d = 0.006693421622965943;
function q(a, t) {
if (L(a, t))
return {
lat: a,
lon: t
};
var n = g(t - 105, a - 35), r = f(t - 105, a - 35), M = a / 180 * h, s = Math.sin(M);
s = 1 - d * s * s;
var o = Math.sqrt(s);
n = n * 180 / (u * (1 - d) / (s * o) * h), r = r * 180 / (u / o * Math.cos(M) * h);
var i = a + n, c = t + r;
return {
lat: i,
lon: c
};
}
function m(a, t) {
var n = t, r = a, M = Math.sqrt(n * n + r * r) + 2e-5 * Math.sin(r * v), s = Math.atan2(r, n) + 3e-6 * Math.cos(n * v), o = M * Math.cos(s) + 65e-4, i = M * Math.sin(s) + 6e-3;
return {
lat: i,
lon: o
};
}
function l(a, t) {
var n = q(a, t), r = m(n.lat, n.lon);
return r;
}
function j(a, t) {
if (L(a, t))
return { lat: a, lon: t };
var n = g(t - 105, a - 35), r = f(t - 105, a - 35), M = a / 180 * h, s = Math.sin(M);
s = 1 - d * s * s;
var o = Math.sqrt(s);
n = n * 180 / (u * (1 - d) / (s * o) * h), r = r * 180 / (u / o * Math.cos(M) * h);
var i = a + n, c = t + r;
return { lat: a * 2 - i, lon: t * 2 - c };
}
function T(a, t) {
var n = t - 65e-4, r = a - 6e-3, M = Math.sqrt(n * n + r * r) - 2e-5 * Math.sin(r * v), s = Math.atan2(r, n) - 3e-6 * Math.cos(n * v), o = M * Math.cos(s), i = M * Math.sin(s);
return { lat: i, lon: o };
}
function _(a, t) {
var n = T(a, t), r = j(n.lat, n.lon);
return r;
}
function g(a, t) {
var n = -100 + 2 * a + 3 * t + 0.2 * t * t + 0.1 * a * t + 0.2 * Math.sqrt(Math.abs(a));
return n += (20 * Math.sin(6 * a * h) + 20 * Math.sin(2 * a * h)) * 2 / 3, n += (20 * Math.sin(t * h) + 40 * Math.sin(t / 3 * h)) * 2 / 3, n += (160 * Math.sin(t / 12 * h) + 320 * Math.sin(t * h / 30)) * 2 / 3, n;
}
function f(a, t) {
var n = 300 + a + 2 * t + 0.1 * a * a + 0.1 * a * t + 0.1 * Math.sqrt(Math.abs(a));
return n += (20 * Math.sin(6 * a * h) + 20 * Math.sin(2 * a * h)) * 2 / 3, n += (20 * Math.sin(a * h) + 40 * Math.sin(a / 3 * h)) * 2 / 3, n += (150 * Math.sin(a / 12 * h) + 300 * Math.sin(a / 30 * h)) * 2 / 3, n;
}
function L(a, t) {
return t < 72.004 || t > 137.8347 || a < 0.8293 || a > 55.8271;
}
const P = (a, t, n) => {
let r = [];
for (let M = 0; M < a; M++) {
let s = Math.random() * (t.lat - n.lat) + n.lat, o = Math.random() * (n.lon - t.lon) + t.lon;
r.push({ lon: o, lat: s });
}
return r;
}, e = (a) => a * Math.PI / 180, w = (a, t, n, r) => {
const s = e(n - a), o = e(r - t), i = Math.sin(s / 2) * Math.sin(s / 2) + Math.cos(e(a)) * Math.cos(e(n)) * Math.sin(o / 2) * Math.sin(o / 2), c = 2 * Math.atan2(Math.sqrt(i), Math.sqrt(1 - i));
return 6371e3 * c;
};
export {
T as bd09ToGcj02,
_ as bd09ToWgs84,
w as calcDistance,
m as gcj02ToBd09,
j as gcj02ToWgs84,
P as generateRandomPoints,
l as wgs84ToBd09,
q as wgs84ToGcj02
};