距离/面积计算
两点间距离
使用LngLat.distance计算两个经纬度之间的直线距离。
var p1 = m1.getPosition();
var p2 = m2.getPosition();
var distance = Math.round(p1.distance(p2));
路径长度
使用 AMap.GeometryUtil.distanceOfLine 计算某段路径的实际长度,返回数据以米为单位。
var arr=new Array();//经纬度坐标数组
arr.push(new AMap.LngLat("116.368904","39.913423"));
arr.push(new AMap.LngLat("116.382122","39.901176"));
arr.push(new AMap.LngLat("116.387271","39.912501"));
arr.push(new AMap.LngLat("116.398258","39.904600"));
arr.push(new AMap.LngLat("116.427097","39.912500"));
var distance = Math.round(AMap.GeometryUtil.distanceOfLine(arr));
区域面积
使用 AMap.GeometryUtil.ringArea 计算区域,返回数据以平方米为单位。
var area = Math.round(AMap.GeometryUtil.ringArea(path));
关系判断
点是否在线上
使用 AMap.GeometryUtil.isPointOnSegment 判断点是否在线上。
// 判断 marker 是否在线段上,最后一个参数为 m米 的误差
// pos为marker的坐标
// path为线段的两个端点坐标
var inLine = AMap.GeometryUtil.isPointOnSegment(pos, path[0], path[1],m);
点是否在多边形内
使用 AMap.GeometryUtil.isPointInRing ,判断点是否在多边形内。
// point为点的坐标
// path为多边形的坐标数组
var isPointInRing = AMap.GeometryUtil.isPointInRing(point, path);
路径是否顺时针
使用 AMap.GeometryUtil.isClockwise ,判断路径是否为顺时针。