UNPKG

jr-util

Version:

这是MJR的JS工具库。定期更新

79 lines (78 loc) 2.84 kB
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 };