Как в 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]]));

→ Ссылка