UNPKG

@tuoyuan/map-adapter-lib

Version:

地图适配器库

39 lines (38 loc) 1.33 kB
function s(r, l) { const n = l.length, d = !0, f = 2e-10; let u = 0, t, i; const e = r; t = l[0]; for (var a = 1; a <= n; ++a) { if (e.latitude == t.latitude && e.longitude == t.longitude) return d; if (i = l[a % n], e.latitude < Math.min(t.latitude, i.latitude) || e.latitude > Math.max(t.latitude, i.latitude)) { t = i; continue; } if (e.latitude > Math.min(t.latitude, i.latitude) && e.latitude < Math.max(t.latitude, i.latitude)) { if (e.longitude <= Math.max(t.longitude, i.longitude)) { if (t.latitude == i.latitude && e.longitude >= Math.min(t.longitude, i.longitude)) return d; if (t.longitude == i.longitude) { if (t.longitude == e.longitude) return d; ++u; } else { var o = (e.latitude - t.latitude) * (i.longitude - t.longitude) / (i.latitude - t.latitude) + t.longitude; if (Math.abs(e.longitude - o) < f) return d; e.longitude < o && ++u; } } } else if (e.latitude == i.latitude && e.longitude <= i.longitude) { const g = l[(a + 1) % n]; e.latitude >= Math.min(t.latitude, g.latitude) && e.latitude <= Math.max(t.latitude, g.latitude) ? ++u : u += 2; } t = i; } return u % 2 != 0; } export { s as isPointInPolygon };