const isPointInPolygon =(aLat, aLon, pointList)=> { /* :param aLon: double 经度 :param aLat: double 纬度 :param pointList: list [{latitude: 22.22, longitude: 113.113}...] 多边形点的顺序需根据顺时针或逆时针,不能乱 */ var iSum = 0 var iCount = pointList.length if(iCount < 3) { return false } for(var i = 0; i < iCount;i++) { var pLat1 = pointList[i][1] var pLon1 = pointList[i][0] if(i == iCount - 1) { var pLat2 = pointList[0][1] var pLon2 = pointList[0][0] } else { var pLat2 = pointList[i + 1][1] var pLon2 = pointList[i + 1][0] } if (((aLat >= pLat1) && (aLat < pLat2)) || ((aLat>=pLat2) && (aLat < pLat1))) { if (Math.abs(pLat1 - pLat2) > 0) { var pLon = pLon1 - ((pLon1 - pLon2) * (pLat1 - aLat)) / (pLat1 - pLat2); if(pLon < aLon) { iSum += 1 } } } } if(iSum % 2 != 0) { return true }else { return false } } module.exports = { isPointInPolygon, };