示例中心
功能在线体验
控制台

高德 开发 地图 JS API 教程 几何计算 计算线面关系等

更新时间:2018年05月28日

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

  1. 判断点是否在面内 AMap.GeometryUtil.isPointInRing
  2. 判断点是否在线段上 AMap.GeometryUtil.isPointOnSegment
  3. 计算两个经纬度面的交叉区域 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]);


更多方法,查看 参考手册

示例中心 功能
在线体验
常见问题