Summary
Methods:
fromPoints |
根据圆心和圆上一点,构建一个圆几何 |
applyTransform |
给定一个函数,用来修改几何对象的坐标值。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制原对象作为副本。 |
atApproximatePoint |
检测一个坐标是否在圆的边界范围以内。 本计算基于边界盒与坐标的相交运算,不包含高程方向的运算,一般用于近似相交判断。注意:与边界盒相交的坐标不一定在圆内,可能会在圆的边缘以外附近。 |
clone |
复制一个圆。 |
destroy |
销毁对象。 |
distanceTo |
计算圆和一个地理几何对象之间的距离(X-Y平面内)。 |
getArea |
计算圆的面积。 |
getBBox |
获取圆的三维包围盒。 |
getBuffer |
获取圆对象的缓冲区。 |
getCenter |
获取圆的中心点。 |
getCentroid |
计算几何对象的质心。 |
getClosestPoint |
从构成圆几何对象的所有点中,获取离传入坐标最近的一个点。 |
getCoordSeq |
提取圆的坐标序列。从起始索引开始提取,取到结束索引的前一位,即按“前闭后开”的原则进行提取坐标序列。 |
getCoordSeqs |
提取圆的坐标序列数组。 |
getCtrlPoints |
获取控制点的几何数组 |
getExtent |
获取圆的地理范围(即边界盒)。该地理范围界定了X-Y平面的边界,不含高程信息。 |
getLength |
计算圆的周长。 |
getPointNum |
计算圆所含的点数量。 |
getPoints |
获取组成圆的所有点 |
getRadius |
获取圆的半径。 |
getType |
获取圆的几何对象类型。 |
intersectsExtent |
检测几何对象与地理范围是否相交。 |
intersectsGeometry |
检测圆与参数几何对象是否相交。 |
isSelfIntersects |
自相交判断。 |
isValid |
(暂不启用)检测当前几何对象是否有效。 |
moveByDelta |
将几何对象的所有坐标按给定的参数偏移。如果参数为负,则向坐标轴负向偏移。 |
rotate |
绕着指定直线(旋转轴)旋转,所指定的直线穿过给定点且平行于坐标轴。旋转后的坐标可能发生变化。绕轴旋转的本质如下: 绕平行于Z轴的直线旋转即是在XY平面内旋转;绕平行于X轴的直线旋转即是在YZ平面内旋转;绕平行于Y轴的直线旋转即是在XZ平面内旋转 |
scale |
按各坐标轴的缩放比例和指定的缩放原点进行缩放。该方法可能改变原几何对象的坐标和位置,如果需要保留原几何对象,可以使用clone方法复制为副本。 |
setCenter |
重设圆的中心点。 |
setRadius |
重设圆的半径。 |
simplify |
简化几何对象。(圆形的简化返回原对象。) |
toPolygon |
将圆转化为多边形。 |
transform |
把圆几何对象中坐标从源坐标系转换到目标坐标系。 返回坐标转换后的圆。(转换后,原始几何对象的坐标值将会被修改,可以使用clone方法备份。) |
Constructor
new Circle(center, radius, num)
圆的构造函数。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
center |
module:geom~Point | 圆的中心点 |
|
radius |
Number | 圆的半径,单位与module:initState~initState.linearUnit设置的一致,可以通过地图对象上的getDegreePerMeter和getMeterPerDegree方法,对地图单位进行度和米的转换。 |
|
num |
Number | 50 | 可选项,构成圆的边的数量,最少是8,默认是50,建议不要超过100;以水平向右为0度角,逆时针方向为正方向进行分段。边数越多,需要渲染的数据量越大,渲染时需要消耗的计算机资源就越多,耗时因此会增加 |
Throws:
当参数center不是点几何对象或者参数radius不是大于0的数字时,抛出异常
Example
let center = new hmap.geom.Point(new hmap.basetype.Coordinate(120,30,0));
let circle = new hmap.geom.Circle(center,20);
Methods
-
static fromPoints(points, num) → {module:geom~Circle}
-
根据圆心和圆上一点,构建一个圆几何
Parameters:
Name Type Default Description points
Array.<module:geom~Point> 圆和点和圆上点,点几何数组。
num
Number 50 构成圆的边的数量,默认为50。
Returns:
module:geom~Circle -
applyTransform(callback)
-
给定一个函数,用来修改几何对象的坐标值。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制原对象作为副本。
Parameters:
Name Type Description callback
function 回调函数,参数为坐标对象,该回调函数会作用在几何对象的每个坐标上
Example
circle.applyTransform(function(coordinate){ coordinate.setOrdinate("X", coordinate.getOrdinate("X")+1); return coordinate; });
-
atApproximatePoint(coord) → {Boolean}
-
检测一个坐标是否在圆的边界范围以内。 本计算基于边界盒与坐标的相交运算,不包含高程方向的运算,一般用于近似相交判断。注意:与边界盒相交的坐标不一定在圆内,可能会在圆的边缘以外附近。
边界盒:即圆的地理范围构成的多边形区域。Parameters:
Name Type Description coord
module:basetype~Coordinate 地理坐标
Throws:
当参数coord不是一个地理坐标对象时,抛出异常
Returns:
Boolean -true表示在圆的边界盒范围以内,false表示不在圆的边界盒范围以内
-
clone() → {module:geom~Circle}
-
复制一个圆。
-
destroy()
-
销毁对象。
Example
circle.destroy();
-
distanceTo(geometry, options) → {Number|Object}
-
计算圆和一个地理几何对象之间的距离(X-Y平面内)。
Parameters:
Name Type Description geometry
module:geom~Geometry 地理几何对象,继承module:geom~Geometry的任意几何对象
options
Object 计算距离时的可选配置项
Name Type Description details
Boolean 指定返回结果的格式,默认为false
若为true,则返回一个对象:{"distance":xxx,"x0":xxx,"y0":xxx,"x1":xxx,"y1":xxx}。其中 distance 表示几何对象到目标几何对象的距离;x0 和 y0 属性表示当前几何对象上最靠近目标几何对象的坐标;x1 和 y1 表示目标几何上最靠近当前几何对象的坐标。
但当edge为false且两个几何对象相交,则计算距离的详细交点信息的:x0,y0,x1,y1 无参考意义!
若为false,则返回几何对象到目标几何对象的距离值,距离的单位与几何对象的坐标相同。edge
Boolean 是否计算一个几何对象到目标几何对象边缘的最近距离,默认为true。 如果为true, 一个几何对象完全包含在目标几何对象中时,计算距离为负数;如果为false,两个几何图形相交情况下 计算距离为0
Returns:
Number | Object -两个几何对象之间的距离。details为true 返回Object 否则返回Number
Example
let options = {details:true,edge:false}; let geom = new hmap.geom.Point(new hmap.basetype.Coordinate(112.0,26.0)); circle.distanceTo(geom,options);
-
getArea() → {Number}
-
计算圆的面积。
Returns:
Number -圆的面积,单位同地图单位
Example
let result = circle.getArea();
-
getBBox() → {module:basetype~BBox}
-
获取圆的三维包围盒。
-
getBuffer(dist, sideType) → {module:geom~Circle}
-
获取圆对象的缓冲区。
Parameters:
Name Type Default Description dist
Number 缓冲距离,一个正数,默认单位同地图单位。如果设置了initState.linearUnit参数且与地图单位不一致时,将自动转换为地图单位。
sideType
String FULL 面缓冲类型,"FULL":包含原几何对象,"OUTSIDE":不包含原有几何对象
Example
circle.getBuffer(0.001)
-
getCenter() → {module:geom~Point}
-
获取圆的中心点。
Example
let result = circle.getCenter();
-
getCentroid() → {module:basetype~Coordinate}
-
计算几何对象的质心。
Example
let result = circle.getCentroid();
-
getClosestPoint(coord) → {module:geom~Point}
-
从构成圆几何对象的所有点中,获取离传入坐标最近的一个点。
Parameters:
Name Type Description coord
module:basetype~Coordinate 一个地理坐标
Throws:
当参数coord不是一个地理坐标对象时,抛出异常
-
getCoordSeq(startIndex, endIndex) → {module:basetype~CoordSeq}
-
提取圆的坐标序列。从起始索引开始提取,取到结束索引的前一位,即按“前闭后开”的原则进行提取坐标序列。
1.当startIndex小于0时则取0,当endIndex大于坐标序列长度时取坐标序列长度;
2.当endIndex未传入时,返回startIndex以后的Coordinate;
3.如果startIndex与endIndex参数为空,返回所有Coordinate。Parameters:
Name Type Default Description startIndex
Number 0 起始索引。如果不传,默认是0
endIndex
Number 结束索引。如果不传,默认是坐标序列长度值
Throws:
当参数startIndex和endIndex都不是数字或者参数startIndex大于等于参数endIndex时,抛出异常
Example
let result = circle.getCoordSeq(0,1);
-
getCoordSeqs() → {Array.<module:basetype~CoordSeq>}
-
提取圆的坐标序列数组。
Returns:
Array.<module:basetype~CoordSeq> -
getCtrlPoints() → {Array.<module:geom~Point>}
-
获取控制点的几何数组
Example
let points = geom.getCtrlPoints();
-
getExtent() → {module:basetype~Extent}
-
获取圆的地理范围(即边界盒)。该地理范围界定了X-Y平面的边界,不含高程信息。
-
getLength() → {Number}
-
计算圆的周长。
Returns:
Number -周长,单位同地图单位
Example
let result = circle.getLength();
-
getPointNum() → {Number}
-
计算圆所含的点数量。
Returns:
Number -一个整数值,表示点的总数
Example
let result = circle.getPointNum();
-
getPoints() → {Array.<module:geom~Point>}
-
获取组成圆的所有点
Example
let result = circle.getPoints();
-
getRadius() → {Number}
-
获取圆的半径。
Returns:
Number -圆的半径,单位同地图单位
Example
let result = circle.getRadius();
-
getType() → {String}
-
获取圆的几何对象类型。
-
intersectsExtent(extent) → {Boolean}
-
检测几何对象与地理范围是否相交。
Parameters:
Name Type Description extent
module:basetype~Extent 地理范围
Returns:
Boolean -为true时表示相交,为false时表示不相交
-
intersectsGeometry(geom) → {Boolean}
-
检测圆与参数几何对象是否相交。
Parameters:
Name Type Description geom
module:geom~Geometry 几何对象
Returns:
Boolean -返回true表示相交;返回false表示不相交
Example
circle.intersectsGeometry(geom);
-
isSelfIntersects() → {Boolean}
-
自相交判断。
Returns:
Boolean -只能为false,表示圆不会自相交
-
isValid()
-
(暂不启用)检测当前几何对象是否有效。
有效判断的的检查项:
1、坐标值是否有效,在坐标系已知的情况下。
2、几何对象自身的拓扑关系。线的自相交、面的八字形状判断。Returns:
-true表示有效,false表示无效
-
moveByDelta(deltaX, deltaY, deltaZ) → {module:geom~Circle}
-
将几何对象的所有坐标按给定的参数偏移。如果参数为负,则向坐标轴负向偏移。
该方法不会改变几何对象的形状,但可能改变原几何对象的位置,如果需要保留原几何对象,可以使用clone方法复制原几何对象作为副本。Parameters:
Name Type Description deltaX
Number X坐标轴方向的平移量
deltaY
Number Y坐标轴方向的平移量
deltaZ
Number Z坐标轴方向的平移量
Throws:
当三个参数有一个不是数值类型时,抛出异常
Example
circle.moveByDelta(0.001,0,0);
-
rotate(axis, angle, center)
-
绕着指定直线(旋转轴)旋转,所指定的直线穿过给定点且平行于坐标轴。旋转后的坐标可能发生变化。绕轴旋转的本质如下: 绕平行于Z轴的直线旋转即是在XY平面内旋转;绕平行于X轴的直线旋转即是在YZ平面内旋转;绕平行于Y轴的直线旋转即是在XZ平面内旋转
该方法不会改变圆的形状,但可能会改变圆的位置,如果需要保留原几何对象,需要事先使用clone方法复制原几何对象作为副本。Parameters:
Name Type Description axis
String 坐标轴,旋转轴平行于该坐标轴并与坐标轴同向。可选值为"X","Y","Z"
angle
Number 旋转的角度,超过360度时,取angle/360的余数。逆时针旋转为正,顺时针旋转为负
center
module:basetype~Coordinate 旋转轴所穿过的坐标,可选项。该参数为空时,绕坐标轴旋转
Throws:
当axis不是'X'、'Y'、'Z'三者之一,或者参数类型不对时,抛出异常
Example
circle.rotate("Y",30,new hmap.basetype.Coordinate(119.0,30.5,0));
-
scale(xyzFactor, origin) → {module:geom~Circle}
-
按各坐标轴的缩放比例和指定的缩放原点进行缩放。该方法可能改变原几何对象的坐标和位置,如果需要保留原几何对象,可以使用clone方法复制为副本。
Parameters:
Name Type Description xyzFactor
Number XYZ方向上的缩放因子一样,必须大于0
origin
module:basetype~Coordinate 缩放原点,表示以缩放原点为参考点进行缩放。默认以几何对象地理范围的中心点进行缩放
Throws:
当参数xyzFactor<=0 或者参数origin不是一个地理坐标对象时,抛出异常
Example
circle.scale(1.2);//将圆放大1.2倍
-
setCenter(center) → {Object}
-
重设圆的中心点。
Parameters:
Name Type Description center
module:geom~Point 圆的中心点
Throws:
当参数center不是一个点对象时,抛出异常
Returns:
Object -返回Circle对象
Example
let result = circle.setCenter(center2);
-
setRadius(radius) → {Boolean}
-
重设圆的半径。
Parameters:
Name Type Description radius
Number 半径
Returns:
Boolean -true表示设置成功,false表示设置失败
Example
let result = circle.setRadius(30);
-
simplify(tolerance) → {module:geom~Circle}
-
简化几何对象。(圆形的简化返回原对象。)
Parameters:
Name Type Description tolerance
Number 容差值,大于等于0。(不表示两个坐标点之间的距离)
-
toPolygon() → {module:geom~Polygon}
-
将圆转化为多边形。
Example
let result = circle.toPolygon();
-
transform(source, destination) → {module:geom~Circle}
-
把圆几何对象中坐标从源坐标系转换到目标坐标系。 返回坐标转换后的圆。(转换后,原始几何对象的坐标值将会被修改,可以使用clone方法备份。)
考虑到实际转换时,数据量可能较大,故传入CRS的SRID,而非CRS实例,以减少CRS实例数量,进而降低内存成本。Parameters:
Name Type Description source
module:proj~Crs 源坐标系。
destination
module:proj~Crs 目标坐标系。
Example
... let circle = new hmap.geom.Circle(pt, 100); circle.transform(3857, 4326);