@tuoyuan/map-adapter-lib
Version:
地图适配器库
39 lines (38 loc) • 1.33 kB
JavaScript
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
};