一些常用的函数。
SuperMap.Plot.PlottingUtil.getDataFromServer = function( serverUrl, libID, code, positionPoints, options, scope, success, fail )
从服务器获取标号数据。
serverUrl | {String} 表示标绘服务的URI |
libID | {Integer} 标号库ID |
code | {Integer} 标号代码 |
positionPoints | {Array(SuperMap.Pixel)} 标号位置点 |
options | {Object} 指定标号的属性 |
scope | {Object} |
success | {Function} 请求成功后的回调函数 |
fail | {Function} 请求失败后的回调函数 |
SuperMap.Plot.PlottingUtil.intersectLines = function ( pntStart1, pntEnd1, pntStart2, pntEnd2 )
求两条直线之间的交点,重叠认为是平行的
pntStart1 | {SuperMap.Geometry.Point} 一条直线起点。 |
pntEnd1 | {SuperMap.Geometry.Point} 一条直线终点。 |
pntStart2 | {SuperMap.Geometry.Point} 另一条直线起点。 |
pntEnd2 | {SuperMap.Geometry.Point} 另一条直线终点。 |
{Object} 返回是否相交(isIntersectLines)及相交时的相交点(intersectPoint)。
SuperMap.Plot.PlottingUtil.getEnvelopePoints = function ( circlePts )
求解圆相交的包络,并组合成环返回
circlePts | {Array(Array(SuperMap.Geometry.Point))} n个圆的拟合点数组。 |
{Array(Array(SuperMap.Geometry.Point))} 返回包络点串。
SuperMap.Plot.PlottingUtil.clonePoints = function ( cp )
克隆点数组。
cp | {Array(SuperMap.Geometry.Point)} 要克隆的点数组。 |
{Array(SuperMap.Geometry.Point)} 返回克隆后的点数组。
SuperMap.Plot.PlottingUtil.isRight = function( pntTest, pntStart, pntEnd )
判断点是否在线段的右边。
pntTest | {SuperMap.Geometry.Point} 要判断的点。 |
pntStart | {SuperMap.Geometry.Point} 线段起点。 |
pntEnd | {SuperMap.Geometry.Point} 线段终点。 |
{boolean} 在右边返回true。
SuperMap.Plot.PlottingUtil.radian = function( pntFrom, pntTo )
计算两点的弧度(和正东方向的逆时针夹角)。
pntFrom | {SuperMap.Geometry.Point} 起点。 |
pntTo | {SuperMap.Geometry.Point} 终点。 |
{Integer} 返回所成弧度。
SuperMap.Plot.PlottingUtil.findPoint = function( pntStart, pntEnd, dDistance, dAngle )
在直线(pntStart, pntEnd)绕pntStart逆时针旋转dAngle度所成的直线上,到pntStart的距离为dDistance的点。
pntStart | {SuperMap.Geometry.Point} 直线起点。 |
pntEnd | {SuperMap.Geometry.Point} 直线终点。 |
dDistance | {Float} 和pntStart的距离。 |
dAngle | {Float} 直线绕pntStart的旋转角度。 |
{SuperMap.Geometry.Point} 返回旋转后的点
SuperMap.Plot.PlottingUtil.isCross = function( pntStart1, pntEnd1, pntStart2, pntEnd2 )
判断线段A是否跨越线段B
pntStart1 | {SuperMap.Geometry.Point} 线段起点。 |
pntEnd1 | {SuperMap.Geometry.Point} 线段终点。 |
pntStart2 | {SuperMap.Geometry.Point} 另一条线段起点。 |
pntEnd2 | {SuperMap.Geometry.Point} 另一条线段终点。 |
{Boolean} 是否跨越
SuperMap.Plot.PlottingUtil.intersectLineSegs = function( pntStart1, pntEnd1, pntStart2, pntEnd2, pntResult )
求解线段和线段的交点,重叠或者平行返回false
pntStart1 | {SuperMap.Geometry.Point} 线段起点。 |
pntEnd1 | {SuperMap.Geometry.Point} 线段终点。 |
pntStart2 | {SuperMap.Geometry.Point} 另一条线段起点。 |
pntEnd2 | {SuperMap.Geometry.Point} 另一条线段终点。 |
pntResult | {SuperMap.Geometry.Point} 返回线段交点 |
{Boolean} 平行返回false
SuperMap.Plot.PlottingUtil.parallel = function( pntSrc, dDistance )
求解折线的平行线。
pntSrc | {Array(SuperMap.Geometry.Point)} 折线数组。 |
dDistance | {Float} 平行线之间距离。 |
{Array(SuperMap.Geometry.Point)} 返回折线点串。
SuperMap.Plot.PlottingUtil.distance = function( pt1, pt2 )
求解两点间距离
pt1 | {SuperMap.Geometry.Point} 第一点 |
pt2 | {SuperMap.Geometry.Point} 另一点 |
{Float} 返回pt1和pt2两点间距离。
SuperMap.Plot.PlottingUtil.projectPoint = function( pt, ptStart, ptEnd )
求pt在线段(ptStart, ptEnd)上的垂足
pt | {SuperMap.Geometry.Point} pt |
ptStart | {SuperMap.Geometry.Point} 线段起点 |
ptEnd | {SuperMap.Geometry.Point} 线段终点 |
{SuperMap.Geometry.Point} 返回垂足点。
SuperMap.Plot.PlottingUtil.pointToLineDis = function( pt, ptStart, ptEnd )
求pt到线段(ptStart, ptEnd)上的距离
pt | {SuperMap.Geometry.Point} pt |
ptStart | {SuperMap.Geometry.Point} 线段起点 |
ptEnd | {SuperMap.Geometry.Point} 线段终点 |
{float} 返回距离。
SuperMap.Plot.PlottingUtil.pointToPloyLineDis = function( pt, ptStart, ptEnd )
求pt到(ptStart, ptEnd)折线上的距离,如果垂足不在折线上,则返回点到线段两个端点距离的较小值
pt | {SuperMap.Geometry.Point} pt |
ptStart | {SuperMap.Geometry.Point} 线段起点 |
ptEnd | {SuperMap.Geometry.Point} 线段终点 |
{float} 返回距离。
SuperMap.Plot.PlottingUtil.isCounterClockwise = function( pt1, pt2, pt3 )
判断三点是否逆时针排列
pt1 | {SuperMap.Geometry.Point} pt1点 |
pt2 | {SuperMap.Geometry.Point} pt2点 |
pt3 | {SuperMap.Geometry.Point} pt3点 |
{boolean} 逆时针排列返回true,否则返回false。
SuperMap.Plot.PlottingUtil.clearSamePts = function( pts )
清除重复点
pts | {Array(SuperMap.Geometry.Point)} 点数组 |
{Array(SuperMap.Geometry.Point)} 返回去重之后的数组
SuperMap.Plot.PlottingUtil.copyFeature = function( feature )
拷贝标号
feature | {SuperMap.Feature.Vector} 标号 |
{SuperMap.Feature.Vector} 返回拷贝后的标号
SuperMap.Plot.PlottingUtil.pointIsOnPolyLine = function( testPt, pt1, pt2 )
判断点是否在两点折线段上
testPt | {SuperMap.Geometry.Point} 测试点 |
pt1 | {SuperMap.Geometry.Point} 折线段的第一个点 |
pt2 | {SuperMap.Geometry.Point} 折线段的第二个点 |
{Boolean} 如果在折线上则返回true,否则返回false
SuperMap.Plot.PlottingUtil.computePointToLineMinDis = function( pt, pts )
计算点到折线段的最小距离
pt | {SuperMap.Geometry.Point} 测试点 |
pts | {Array(SuperMap.Geometry.Point)} 折线段的点数组 |
{object} 最小距离和最小距离所在折线段的索引
SuperMap.Plot.PlottingUtil.findPointInLine = function( pntStart, pntEnd, dDistance )
沿着直线的方向, 在直线上找一个点, 到起始点(pntStart)的距离等于dDistance
pntStart | {SuperMap.Geometry.Point} 直线起点。 |
pntEnd | {SuperMap.Geometry.Point} 直线终点。 |
dDistance | {Float} 和pntStart的距离。 |
{SuperMap.Geometry.Point} 直线方向与起始点相距dDistance的点
SuperMap.Plot.PlottingUtil.findPointInPolyLine = function( pts, dDistance )
根据长度获取位置点和位置点索引
pts | {Array(SuperMap.Geometry.Point)} 点数组。 |
dDistance | {Float} 所求点到pts[0]的折线距离。 |
{object} 所求点的索引(index)和点位置(pt)
SuperMap.Plot.PlottingUtil.polylineDistance = function( controlPoints )
求点串的折线总长度
controlPoints | {Array(SuperMap.Geometry.Point)} 点串 |
{Float} 返回点串总长度。
SuperMap.Plot.PlottingUtil.rotate = function( pntAnchor, dCos, dSin, pntSource )
给出参数(cos,sin)计算点旋转
pntAnchor | {SuperMap.Geometry.Point} 参考点坐标; |
dCos | {float} 余弦 |
dSin | {float} 正弦 |
pntSource | {SuperMap.Geometry.Point} 旋转的点 |
{SuperMap.Geometry.Point} 返回旋转后的点。
SuperMap.Plot.PlottingUtil.pointProjectToSegment = function( pntHitTest, pntLinsectStart, pntLinsectEnd )
判断点在线段上是否有垂足点,有并求垂足点
pntHitTest | {(SuperMap.Geometry.Point)} 一个点。 |
pntLinsectStart | {(SuperMap.Geometry.Point)} 线段的起始点。 |
pntLinsectEnd | {(SuperMap.Geometry.Point)} 线段的结束点。 |
{object} isOnline垂足是否在线上,projectPoint垂足点
SuperMap.Plot.PlottingUtil.paraLine = function( srcPnts, dis, isLeft )
求点串左边或右边的平行线点串数组
srcPnts | {Array(SuperMap.Geometry.Point)} 点串。 |
dis | {Float} 平行线间的距离。 |
isLeft | {boolean} true是左平行线,false是右平行线。 |
{Array(SuperMap.Geometry.Point)} 平行线的点串数组
SuperMap.Plot.PlottingUtil.circlePoint = function( center, dx, dy, angle )
求圆上点
center | {Array(SuperMap.Geometry.Point)} 圆心点。 |
dx | {Float} 半径1。 |
dy | {Float} 半径2。 |
angle | {Float} 角度(圆上点、圆心点所成的直线与X轴正方向的夹角),单位为角度。 |
{SuperMap.Geometry.Point} 指定角度的圆上点
SuperMap.Plot.PlottingUtil.getPolygonCenterPt = function( pts )
计算多边形的中心点
pts | {Array(SuperMap.Geometry.Point)} 多边形位置点。 |
{SuperMap.Geometry.Point} 中心点
SuperMap.Plot.PlottingUtil.ptIsInPolygon = function( pts, testPt )
判断点是否在多边形内
pts | {Array(SuperMap.Geometry.Point)} 多边形位置点。 |
testPt | {SuperMap.Geometry.Point} 测试点。 |
{Boolean} 在多边形内返回true,否则返回false
SuperMap.Plot.PlottingUtil.projectPtOnPolyLine = function( pt, polyLinePts )
垂足点在折线上
pt | {SuperMap.Geometry.Point} 测试点。 |
polyLinePts | {Array(SuperMap.Geometry.Point)} 折线点串。 |
{object} 垂足点的索引和垂足点
SuperMap.Plot.PlottingUtil.isPloyClockwise = function( pts )
判断图形为顺时针逆时针
pts | {Array(SuperMap.Geometry.Point)} 多边形点串。 |
{Integer} 逆时针返回0 顺时针返回1
SuperMap.Plot.PlottingUtil.isSamePt = function( pt1, pt2 )
判断两个点是否相等
pt1 | {SuperMap.Geometry.Point} 点。 |
pt1 | {SuperMap.Geometry.Point} 点。 |
{Boolean} 如果相等返回true,否则返回false
SuperMap.Plot.PlottingUtil.getPtsIndexByDistance = function( dis, points )
在点串坐标中计算出长度为指定距离的点坐标,返回该点坐标
dis | {float} 指定的距离 |
points | {Array(SuperMap.Geometry.Point)}点串坐标 |
{object} 返回的位置点坐标和索以及位置点是否在点串的线段上
SuperMap.Plot.PlottingUtil.ptInBounds = function( pnt, bounds )
判断点是否在包围框bounds里面
bounds | {object} 包围框bounds |
pnt | {SuperMap.Geometry.Point} 位置点 |
{boolean} 返回true是在bounds内,false表示不在
SuperMap.Plot.PlottingUtil.InnerAngle = function( vertex, pt1, pt2 )
计算三点构成的夹角 [0~180]
pt1 | {SuperMap.Geometry.Point} 一个端点 |
pt2 | {SuperMap.Geometry.Point} 另一个端点 |
vertex | {SuperMap.Geometry.Point} 顶点 |
{Float} 返回弧度
SuperMap.Plot.PlottingUtil.plumbLineLen = function( pt1, pt2, pt3 )
三角形顶点到对边的垂直距离,参数以坐标值的形式传入
pt1, pt2, pt3 | {SuperMap.Geometry.Point} 三角形的三个顶点 |
{float} 垂直距离
SuperMap.Plot.PlottingUtil.paraPolygon = function ( pts, dis, bOut )
求平行折线
pts | {SuperMap.Geometry.Point} 二维折线点串 |
dis | {float} 平行折线距离 |
bOut | {boolean} 默认生成在线的左侧 |
{Array(SuperMap.Geometry.Point)} 平行点串
SuperMap.Plot.PlottingUtil.getOutRectangleDis = function ( pts2D )
求解点数组中最大点与最小点的距离
pts2D | {SuperMap.Geometry.Point} 二维折线点串 |
{float} 距离
从服务器获取标号数据。
SuperMap.Plot.PlottingUtil.getDataFromServer = function( serverUrl, libID, code, positionPoints, options, scope, success, fail )
去除左右两端空格。
SuperMap.Plot.PlottingUtil.trim = function ( str )
生成全局唯一标识符uuid。
SuperMap.Plot.PlottingUtil.generateUuid = function ()
判断浮点数是否近似等于某个值。
SuperMap.Plot.PlottingUtil.isNear = function ( num, tolerance )
判断两个浮点数是否近似相等。
SuperMap.Plot.PlottingUtil.equalFuzzy = function ( numA, numB, tolerance )
求两条直线之间的交点,重叠认为是平行的
SuperMap.Plot.PlottingUtil.intersectLines = function ( pntStart1, pntEnd1, pntStart2, pntEnd2 )
求解圆相交的包络,并组合成环返回
SuperMap.Plot.PlottingUtil.getEnvelopePoints = function ( circlePts )
克隆点数组。
SuperMap.Plot.PlottingUtil.clonePoints = function ( cp )
获取text中的字符个数。
SuperMap.Plot.PlottingUtil.getTextCount = function ( text )
将对象转换成 JSON 字符串。
SuperMap.Plot.PlottingUtil.toJSON = function ( obj )
判断点是否在线段的右边。
SuperMap.Plot.PlottingUtil.isRight = function( pntTest, pntStart, pntEnd )
计算两点的弧度(和正东方向的逆时针夹角)。
SuperMap.Plot.PlottingUtil.radian = function( pntFrom, pntTo )
在直线(pntStart, pntEnd)绕pntStart逆时针旋转dAngle度所成的直线上,到pntStart的距离为dDistance的点。
SuperMap.Plot.PlottingUtil.findPoint = function( pntStart, pntEnd, dDistance, dAngle )
判断线段A是否跨越线段B
SuperMap.Plot.PlottingUtil.isCross = function( pntStart1, pntEnd1, pntStart2, pntEnd2 )
求解线段和线段的交点,重叠或者平行返回false
SuperMap.Plot.PlottingUtil.intersectLineSegs = function( pntStart1, pntEnd1, pntStart2, pntEnd2, pntResult )
求解折线的平行线。
SuperMap.Plot.PlottingUtil.parallel = function( pntSrc, dDistance )
求解两点间距离
SuperMap.Plot.PlottingUtil.distance = function( pt1, pt2 )
求pt在线段(ptStart, ptEnd)上的垂足
SuperMap.Plot.PlottingUtil.projectPoint = function( pt, ptStart, ptEnd )
求pt到线段(ptStart, ptEnd)上的距离
SuperMap.Plot.PlottingUtil.pointToLineDis = function( pt, ptStart, ptEnd )
求pt到(ptStart, ptEnd)折线上的距离,如果垂足不在折线上,则返回点到线段两个端点距离的较小值
SuperMap.Plot.PlottingUtil.pointToPloyLineDis = function( pt, ptStart, ptEnd )
判断三点是否逆时针排列
SuperMap.Plot.PlottingUtil.isCounterClockwise = function( pt1, pt2, pt3 )
清除重复点
SuperMap.Plot.PlottingUtil.clearSamePts = function( pts )
拷贝标号
SuperMap.Plot.PlottingUtil.copyFeature = function( feature )
颜色从Object转到字符串
SuperMap.Plot.PlottingUtil.colorRGBToString = function( colorData )
颜色从字符串转到Object
SuperMap.Plot.PlottingUtil.colorStringToRGB = function( colorData )
RGB十六进制颜色转成ABGR的十进制
SuperMap.Plot.PlottingUtil.hexToDecimal = function( colorData, opacity )
判断点是否在两点折线段上
SuperMap.Plot.PlottingUtil.pointIsOnPolyLine = function( testPt, pt1, pt2 )
计算点到折线段的最小距离
SuperMap.Plot.PlottingUtil.computePointToLineMinDis = function( pt, pts )
沿着直线的方向, 在直线上找一个点, 到起始点(pntStart)的距离等于dDistance
SuperMap.Plot.PlottingUtil.findPointInLine = function( pntStart, pntEnd, dDistance )
根据长度获取位置点和位置点索引
SuperMap.Plot.PlottingUtil.findPointInPolyLine = function( pts, dDistance )
求点串的折线总长度
SuperMap.Plot.PlottingUtil.polylineDistance = function( controlPoints )
给出参数(cos,sin)计算点旋转
SuperMap.Plot.PlottingUtil.rotate = function( pntAnchor, dCos, dSin, pntSource )
判断点在线段上是否有垂足点,有并求垂足点
SuperMap.Plot.PlottingUtil.pointProjectToSegment = function( pntHitTest, pntLinsectStart, pntLinsectEnd )
求点串左边或右边的平行线点串数组
SuperMap.Plot.PlottingUtil.paraLine = function( srcPnts, dis, isLeft )
求圆上点
SuperMap.Plot.PlottingUtil.circlePoint = function( center, dx, dy, angle )
计算多边形的中心点
SuperMap.Plot.PlottingUtil.getPolygonCenterPt = function( pts )
判断点是否在多边形内
SuperMap.Plot.PlottingUtil.ptIsInPolygon = function( pts, testPt )
垂足点在折线上
SuperMap.Plot.PlottingUtil.projectPtOnPolyLine = function( pt, polyLinePts )
判断图形为顺时针逆时针
SuperMap.Plot.PlottingUtil.isPloyClockwise = function( pts )
判断两个点是否相等
SuperMap.Plot.PlottingUtil.isSamePt = function( pt1, pt2 )
在点串坐标中计算出长度为指定距离的点坐标,返回该点坐标
SuperMap.Plot.PlottingUtil.getPtsIndexByDistance = function( dis, points )
判断点是否在包围框bounds里面
SuperMap.Plot.PlottingUtil.ptInBounds = function( pnt, bounds )
计算三点构成的夹角 [0~180]
SuperMap.Plot.PlottingUtil.InnerAngle = function( vertex, pt1, pt2 )
三角形顶点到对边的垂直距离,参数以坐标值的形式传入
SuperMap.Plot.PlottingUtil.plumbLineLen = function( pt1, pt2, pt3 )
求平行折线
SuperMap.Plot.PlottingUtil.paraPolygon = function ( pts, dis, bOut )
求解点数组中最大点与最小点的距离
SuperMap.Plot.PlottingUtil.getOutRectangleDis = function ( pts2D )
判断是否是对象
SuperMap.Plot.PlottingUtil.isEmptyObject = function ( obj )