计算线面关系等 最后更新时间: 2021年01月22日
本章我们将介绍一些常用的计算线面关系的数学计算方法,包括:
- 判断点是否在面内 AMap.GeometryUtil.isPointInRing
- 判断点是否在线段上 AMap.GeometryUtil.isPointOnSegment
- 计算两个经纬度面的交叉区域 AMap.GeometryUtil.ringRingClip
判断点是否在面内
当需要计算指定点是否在某闭合区域内,可以使用静态方法 AMap.GeometryUtil.isPointInRing
,返回布尔值。
var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
var p3 = [116.466171, 39.937977];
// 判断 p0 是否在 p1-p2-p3 围成的封闭区域内
var inRing = AMap.GeometryUtil.isPointInRing(p0, [p1, p2, p3]);
判断点是否在线段上
当需要计算指定点是否在线段上时,可以使用静态方法 AMap.GeometryUtil.isPointOnSegment
,返回布尔值。
var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
var p3 = [116.466171, 39.937977];
// 判断 p0 是否在 p1-p2 组成的线段上,最后一个参数为 100米 的误差
var inLine = AMap.GeometryUtil.isPointOnSegment(p0, p1, p2, 100);
计算两个面的交叉区域
当需要计算两个面交叉区域时,可以使用静态方法 AMap.GeometryUtil.ringRingClip
,返回交叉区域的路径。
var p0 = [116.446108, 39.94753];
var p1 = [116.433577, 39.941081];
var p2 = [116.4616, 39.941476];
var p3 = [116.45404, 39.947472];
// 计算面 p0-p1-p2 和面 p3-p1-p2 交叉的区域。返回交叉区域路径,如果没有交叉则路径为空。
var range = AMap.GeometryUtil.ringRingClip([p0, p1, p2], [p3, p1, p2]);
更多方法,查看 参考手册