主要用到了射线法(Ray Casting Algorithm)来判断一个点是否在多边形的范围内。
下面是一个简单的JavaScript函数来实现这个功能:
function pointInPolygon(point, polygon) {
var x = point[0];
var y = point[1];
var inside = false;
for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
var xi = polygon[i][0];
var yi = polygon[i][1];
var xj = polygon[j][0];
var yj = polygon[j][1];
var intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
if (intersect) inside = !inside;
}
return inside;
}
// 使用示例
var pointA = [11, 5];
var polygonB = [[2, 3], [9, 3], [11, 8], [4, 11]];
var result = pointInPolygon(pointA, polygonB);
console.log(result); // 输出 true 或 false
在这个函数中,point是一个包含经纬度坐标的数组,而polygon是一个包含多边形坐标点的数组。函数通过遍历多边形的每一条边,使用射线与边的交点数量来判断点是否在多边形内部。如果交点数量为奇数,则点在多边形内部,否则在外部。
标签:yi,多边形,polygon,point,inside,js,坐标,var From: https://blog.51cto.com/u_15668841/9182507