开发 地图 JS API 2.0 进阶教程 几何计算 计算线面关系等

计算线面关系等 最后更新时间: 2024年02月26日

本文介绍一些常用的计算线面关系的数学计算方法,包括:

  1. 判断点是否在面内AMap.GeometryUtil.isPointInRing
  2. 判断点是否在线段上AMap.GeometryUtil.isPointOnSegment
  3. 计算两个经纬度面的交叉区域AMap.GeometryUtil.ringRingClip

1、判断点是否在面内

当需要计算指定点是否在某闭合区域内,可以使用静态方法 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]);

2、判断点是否在线段上

当需要计算指定点是否在线段上时,可以使用静态方法 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);

3、计算两个面的交叉区域

当需要计算两个面交叉区域时,可以使用静态方法 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]);
返回顶部 示例中心 常见问题 智能客服 公众号
二维码