使用射线法判断echarts上地图中的点是否在地图范围中
2017-05-11 14:36
295 查看
使用射线法判断echarts上地图中的点是否在地图范围中
/** * @description 射线法判断点是否在多边形内部 * @param {Object} p 待判断的点,格式:{ x: X坐标, y: Y坐标 } * @param {Array} poly 多边形顶点,数组成员的格式同 p * @return {String} 点 p 和多边形 poly 的几何关系 */ //将第一个点复制到结尾 //得到计算上下左右极限,得到最小矩形 //得到最小矩形高度,设置分割份数,得到每份高度 //按每份高度 //首先使用最小矩形进行排除 // 射线判断函数 function rayCasting(p, poly) { var px = p[0], py = p[1], flag = false for(var i = 0, l = poly.length, j = l - 1; i < l; j = i, i++) { var sx = poly[i][0], sy = poly[i][1], tx = poly[j][0], ty = poly[j][1] // 点与多边形顶点重合 if((sx === px && sy === py) || (tx === px && ty === py)) { return true } // 判断线段两端点是否在射线两侧 if((sy < py && ty >= py) || (sy >= py && ty < py)) { // 线段上与射线 Y 坐标相同的点的 X 坐标 var x = sx + (py - sy) * (tx - sx) / (ty - sy) // 点在多边形的边上 if(x === px) { return true } // 射线穿过多边形的边界 if(x > px) { flag = !flag } } } // 射线穿过多边形边界的次数为奇数时点在多边形内 return flag ? true : false }
相关文章推荐
- O2O地图应用之判断用户订单地址是否在服务范围内
- [Unity小技巧] 使用射线Raycast判断某个方向是否有碰撞体
- C#使用DateTime获取某段日期范围内的所有日期与判断某个日期是否在某段日期范围内
- 射线法判断地图上点是否在多边形内
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- C#使用DateTime获取某段日期范围内的所有日期与判断某个日期是否在某段日期范围内
- 3ff8 android地图,判断坐标是否在你要求的范围内
- Unity3d 射线测试+使用手势判断是否触碰了某物体
- 关于echarts的地图的渲染,根据一个值去判断地图上的点是否该报警!
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- android地图,判断坐标是否在你要求的范围内
- unity使用手势时,通过射线判断是否触碰到了某物体
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- 使用javascript+正则表达式判断输入是否为整数
- asp 判断文本域是否为数字并且该数字在一范围内
- 使用JS判断checkbox是否至少有选择一项
- 判断空间射线是否穿过空间三角形的程序实现
- 使用SQL判断当前JOB是否在运行
- 判断IP地址是否合法的sql2000使用存储过程跟函数
- 经常使用的判断string是否为数字的函数