利用的是点射法
p的坐标为[x1,y1]
arr的坐标为[[x1,y1],[x2,y2],[x3,y3],*****]为多边形的坐标
panduanpoint(p, arr) {
console.log(p,arr);
var px = p[0],
py = p[1],
flag = false
for(var i = 0, l = arr[0].length, j = l - 1; i < l; j = i, i++) {
var sx = arr[0][i][0]
var sy = arr[0][i][1]
var tx = arr[0][j][0]
var ty = arr[0][j][1]
if((sx === px && sy === py) || (tx === px && ty === py)) {
return true
}
if((sy === ty && sy === py) && ((sx > px && tx < px) || (sx < px && tx > px))) {
return true
}
if((sy < py && ty >= py) || (sy >= py && ty < py)) {
let x = sx + (py - sy) * (tx - sx) / (ty - sy)
if(x === px) {
return true
}
if(x > px) {
flag = !flag
}
}
}
return flag ? true : false
},