射线法判断坐标点是否在多边形图形内

使用百度地图时产生的需求,而且在百度地图没找到相关api

/**
 * @description 根据传入的坐标数组和传入的多边形边界坐标点数组集合,用射线法判断坐标点是否在多边形图形内
 * @param {Array} point 经纬度坐标 eg: [120.284725, 30.199312]
 * @param {Array} Polygon 多边形边界坐标点数组集合 eg: [[120.284725, 30.199312], [120.284725, 30.199312], [120.284725, 30.199312]]
 * @returns {Boolean}
*/
export const isPointInPolygon = (point, Polygon) => {
  var flag = false;
  for (var i = 0, j = Polygon.length - 1; i < Polygon.length; j = i++) {
    if (((Polygon[i][1] > point[1]) != (Polygon[j][1] > point[1])) && (point[0] < (Polygon[j][0] - Polygon[i][0]) * (point[1] - Polygon[i][1]) / (Polygon[j][1] - Polygon[i][1]) + Polygon[i][0])) {
      flag = !flag;
    }
  }
  return flag;
}

高德地图自带api(点是否在多边形内)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值