Как в react-native проверить вхождение точки в Polygon
На сайте области заданы в виде массива координат, полученных в результате прорисовки многоугольника на карте. В мобильном приложении необходимо определить вхождение точки в область. Библиотеки point-in-polygon не "воспринимают" массив точек полученный при задании области с помощью прорисовки полигона на Яндекс картах. Есть ли другие способы?
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
Функция очень простая
function inPolygon(point, polygon){
const [px,py] = point;
const pl = polygon.length;
let c = false;
for(let i=0,j=pl-1;i<pl;j=i++){
const [ix,iy] = polygon[i],[jx,jy] = polygon[j];
if ( ((iy>py) != (jy>py)) && (px < (jx-ix) * (py-iy) / (jy-iy) + ix) ){
c = !c;
}
}
return c;
}
// Квадратный полигон
console.log(inPolygon([30,30],[[10,10],[10,50],[50,50],[50,10]]));
// Выпуклый полигон
console.log(inPolygon([30,30],[[10,10],[10,20],[40,20],[40,40],[20,40],[20,50],[50,50],[50,10]]));
// Треугольный полигон
console.log(inPolygon([30,30],[[10,10],[30,50],[50,10]]));