geom~Circle(center, radius, num)

圆是一个特殊的正多边形,正多边形的边数越多,越逼近圆,同时渲染时需要消耗的计算机资源就越多。

Summary

Methods:
fromPoints

根据圆心和圆上一点,构建一个圆几何

applyTransform

给定一个函数,用来修改几何对象的坐标值。该方法可能改变原几何对象的坐标值,如果需要保留原几何对象,可以使用clone方法复制原对象作为副本。

atApproximatePoint

检测一个坐标是否在圆的边界范围以内。 本计算基于边界盒与坐标的相交运算,不包含高程方向的运算,一般用于近似相交判断。注意:与边界盒相交的坐标不一定在圆内,可能会在圆的边缘以外附近。
边界盒:即圆的地理范围构成的多边形区域。

clone

复制一个圆。

destroy

销毁对象。

distanceTo

计算圆和一个地理几何对象之间的距离(X-Y平面内)。

getArea

计算圆的面积。

getBBox

获取圆的三维包围盒。

getBuffer

获取圆对象的缓冲区。

getCenter

获取圆的中心点。

getCentroid

计算几何对象的质心。

getClosestPoint

从构成圆几何对象的所有点中,获取离传入坐标最近的一个点。

getCoordSeq

提取圆的坐标序列。从起始索引开始提取,取到结束索引的前一位,即按“前闭后开”的原则进行提取坐标序列。
1.当startIndex小于0时则取0,当endIndex大于坐标序列长度时取坐标序列长度;
2.当endIndex未传入时,返回startIndex以后的Coordinate;
3.如果startIndex与endIndex参数为空,返回所有Coordinate。

getCoordSeqs

提取圆的坐标序列数组。

getCtrlPoints

获取控制点的几何数组

getExtent

获取圆的地理范围(即边界盒)。该地理范围界定了X-Y平面的边界,不含高程信息。

getLength

计算圆的周长。

getPointNum

计算圆所含的点数量。

getPoints

获取组成圆的所有点

getRadius

获取圆的半径。

getType

获取圆的几何对象类型。

intersectsExtent

检测几何对象与地理范围是否相交。

intersectsGeometry

检测圆与参数几何对象是否相交。

isSelfIntersects

自相交判断。

isValid

(暂不启用)检测当前几何对象是否有效。
有效判断的的检查项:
1、坐标值是否有效,在坐标系已知的情况下。
2、几何对象自身的拓扑关系。线的自相交、面的八字形状判断。

moveByDelta

将几何对象的所有坐标按给定的参数偏移。如果参数为负,则向坐标轴负向偏移。
该方法不会改变几何对象的形状,但可能改变原几何对象的位置,如果需要保留原几何对象,可以使用clone方法复制原几何对象作为副本。

rotate

绕着指定直线(旋转轴)旋转,所指定的直线穿过给定点且平行于坐标轴。旋转后的坐标可能发生变化。绕轴旋转的本质如下: 绕平行于Z轴的直线旋转即是在XY平面内旋转;绕平行于X轴的直线旋转即是在YZ平面内旋转;绕平行于Y轴的直线旋转即是在XZ平面内旋转
该方法不会改变圆的形状,但可能会改变圆的位置,如果需要保留原几何对象,需要事先使用clone方法复制原几何对象作为副本。

scale

按各坐标轴的缩放比例和指定的缩放原点进行缩放。该方法可能改变原几何对象的坐标和位置,如果需要保留原几何对象,可以使用clone方法复制为副本。

setCenter

重设圆的中心点。

setRadius

重设圆的半径。

simplify

简化几何对象。(圆形的简化返回原对象。)

toPolygon

将圆转化为多边形。

transform

把圆几何对象中坐标从源坐标系转换到目标坐标系。 返回坐标转换后的圆。(转换后,原始几何对象的坐标值将会被修改,可以使用clone方法备份。)
考虑到实际转换时,数据量可能较大,故传入CRS的SRID,而非CRS实例,以减少CRS实例数量,进而降低内存成本。

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。

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}

复制一个圆。

Returns:
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}

获取圆的三维包围盒。

Returns:
module:basetype~BBox -

返回圆的三维包围盒

getBuffer(dist, sideType) → {module:geom~Circle}

获取圆对象的缓冲区。

Parameters:
Name Type Default Description
dist Number

缓冲距离,一个正数,默认单位同地图单位。如果设置了initState.linearUnit参数且与地图单位不一致时,将自动转换为地图单位。

sideType String FULL

面缓冲类型,"FULL":包含原几何对象,"OUTSIDE":不包含原有几何对象

Returns:
module:geom~Circle -

缓冲区

Example
circle.getBuffer(0.001)

getCenter() → {module:geom~Point}

获取圆的中心点。

Returns:
module:geom~Point -

中心点

Example
let result = circle.getCenter();

getCentroid() → {module:basetype~Coordinate}

计算几何对象的质心。

Returns:
module:basetype~Coordinate -

质心坐标

Example
let result = circle.getCentroid();

getClosestPoint(coord) → {module:geom~Point}

从构成圆几何对象的所有点中,获取离传入坐标最近的一个点。

Parameters:
Name Type Description
coord module:basetype~Coordinate

一个地理坐标

Throws:

当参数coord不是一个地理坐标对象时,抛出异常

Returns:
module:geom~Point -

圆对象上的一个点

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时,抛出异常

Returns:
module:basetype~CoordSeq -

坐标序列。以x轴正方向为基准,顺时针旋转方式排序

Example
let result = circle.getCoordSeq(0,1);

getCoordSeqs() → {Array.<module:basetype~CoordSeq>}

提取圆的坐标序列数组。

Returns:
Array.<module:basetype~CoordSeq>

getCtrlPoints() → {Array.<module:geom~Point>}

获取控制点的几何数组

Returns:
Array.<module:geom~Point> -

点几何数组

Example
let points = geom.getCtrlPoints();

getExtent() → {module:basetype~Extent}

获取圆的地理范围(即边界盒)。该地理范围界定了X-Y平面的边界,不含高程信息。

Returns:
module:basetype~Extent -

地理范围

getLength() → {Number}

计算圆的周长。

Returns:
Number -

周长,单位同地图单位

Example
let result = circle.getLength();

getPointNum() → {Number}

计算圆所含的点数量。

Returns:
Number -

一个整数值,表示点的总数

Example
let result = circle.getPointNum();

getPoints() → {Array.<module:geom~Point>}

获取组成圆的所有点

Returns:
Array.<module:geom~Point> -

点数组

Example
let result = circle.getPoints();

getRadius() → {Number}

获取圆的半径。

Returns:
Number -

圆的半径,单位同地图单位

Example
let result = circle.getRadius();

getType() → {String}

获取圆的几何对象类型。

Returns:
String -

hmap所支持的几何类型枚举值,参见module:geom~GeometryType

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:

当三个参数有一个不是数值类型时,抛出异常

Returns:
module:geom~Circle -

移动后的圆几何对象

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不是一个地理坐标对象时,抛出异常

Returns:
module:geom~Circle -

返回缩放后的圆几何对象

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。(不表示两个坐标点之间的距离)

Returns:
module:geom~Circle -

返回简化后的几何对象

toPolygon() → {module:geom~Polygon}

将圆转化为多边形。

Returns:
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

目标坐标系。

Returns:
module:geom~Circle -

坐标转换后的几何对象。

Example
...
let circle = new hmap.geom.Circle(pt, 100);
circle.transform(3857, 4326);