Class: SketchPrismDrawTool

SketchPrismDrawTool

new SketchPrismDrawTool(options)

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 11

棱柱草图绘制工具。

基于多边形底面创建拉伸三维面符号,适用于在三维草图编辑中绘制和编辑棱柱图形。 工具继承区绘制能力,并额外维护高度控制点、顶点编辑辅助图形以及绕 Z 轴的旋转编辑状态。

Name Type Default Description
options Object {} 可选

构造参数。

Name Type Default Description
view MapView | SceneView 可选

地图视图对象,提供坐标转换、拾取和图层交互能力。

layer GraphicsLayer 可选

草图图层对象,用于承载绘制完成的棱柱要素。

sketchStyle SketchStyle | SketchStyle3D 可选

草图符号样式。工具会从填充样式中读取 ExtrudeSymbol3DLayer 作为三维拉伸符号层。

entityHeight Number 500 可选

初始拉伸高度,单位与三维符号层高度单位保持一致。

entityType String 'prism' 可选

三维实体类型。prism 表示棱柱,其他值按符号层 primitive 能力生成对应棱锥类效果。

heading Number 0 可选

绕垂直方向的初始航向角。

tilt Number 0 可选

初始俯仰角。

roll Number 0 可选

初始滚转角。

Example

创建棱柱绘制工具

// ES5 引入方式
const { SketchPrismDrawTool } = zondy.tool.sketch

// ES6 引入方式
import { SketchPrismDrawTool } from '@mapgis/webclient-common'

const drawTool = new SketchPrismDrawTool({
  view,
  layer,
  entityHeight: 500,
  entityType: 'prism'
})
drawTool.start()

Extends

Members

arcTypeNumber

弧线类型

editOptionObject

草图选中编辑配置项

elevationInfoSketchStyle

图形高程模式参数

extensionOptionsObject

草图编辑的扩展属性,可以通过该属性传入草图编辑额外需要的参数

草图图层

sketchStageSketchStage

草图绘图形集合

sketchStyleSketchStyle

草图符号

typeString

草图工具类型名

undoRedoManagerString

草图撤销回退管理器

地图视图

Methods

inherited _getProjectionOnRotatedAxes(rotationAngle, startPoint, endPoint){Object}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 3294

计算点2到中心点在旋转后坐标轴上的投影距离

Name Type Description
rotationAngle number

旋转角度(弧度)

startPoint Object

起始点(中心点),格式 { x, y }

endPoint Object

终止点(目标点),格式 { x, y }

Returns:
Type Description
Object 返回 { x, y } 表示在旋转后坐标系中的投影距离

inherited _getProjectionOnRotatedAxes1(rotation, startPoint, endPoint){Object}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 3331

计算点到坐标轴方向的分量

Name Type Description
rotation number

坐标系旋转角度(弧度,正值为顺时针)

startPoint Object

起点(原点)像素坐标 {x, y}

endPoint Object

终点(P点)像素坐标 {x, y}

Returns:
Type Description
Object 返回 {x, y} - 点在旋转后坐标系的x轴和y轴方向上的分量距离

inherited _rotatePoint(angleDegrees, P, Q){Object}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 3384

计算点Q绕点P旋转后的坐标

Name Type Description
angleDegrees number

旋转角度(度),逆时针为正,顺时针为负

P Object

旋转中心点坐标

Q Object

旋转前Q点坐标

Returns:
Type Description
Object Q点旋转后的坐标

addFeature(points, sketchStyle, attributes, layer){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 142

添加棱柱或棱锥草图要素。

根据传入底面点集创建多边形几何,并使用当前 sketchStyle.fillStyle 中的三维拉伸符号层生成实体图形。 创建后的要素会写入 sketchStage.entityGraphic,并添加到指定图层。

Name Type Description
points Array.<(Point|Array.<Number>)>

底面点坐标集合。数组元素可以是 Point 实例或坐标数组。

sketchStyle SketchStyle | SketchStyle3D

面符号样式参数。当前实现保留该参数以兼容调用签名,实际符号来源为工具实例的 sketchStyle。

attributes Object 可选

写入草图要素的属性对象。

layer GraphicsLayer 可选

要素添加到的目标图层;未传入时由底层添加逻辑使用工具默认图层。

Returns:
Type Description
void

addMidVertex(index, point){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 739

添加边中点辅助顶点。

当前实现保留旧版调用入口,仅创建一个点绘制工具并写入 sketchStage.midVertexGraphics。

Name Type Description
index Number

中点插入位置索引。当前实现未使用该参数。

point Point

边中点位置。

Returns:
Type Description
void

addVertex(point, index){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 755

在当前棱柱或棱锥底面中插入新的顶点。

具体插入逻辑由父类区绘制工具实现,本方法保持棱柱工具的统一调用入口。

Name Type Description
point Point

新增或插入的顶点。

index Number

新增顶点的索引值,索引值从 0 开始。

Returns:
Type Description
void

inherited drawFeature()

sketchEditor/base/drawTools/SketchPolygonDrawTool.js, line 71

鼠标绘制图形:鼠标单击绘制区的一个顶点;鼠标移动,区图形随鼠标位置变动;鼠标双击,完成区图形绘制。

inherited getDistanceByPixel(pixel){Number}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 1975

根据像素单位获取距离

Name Type Description
pixel Number

编辑状态码

Returns:
Type Description
Number 距离

inherited getMidScaleCoordinates(coordinates, direction, extent, startPoint, movePoint, oriCoordinates){Number}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 2106

获取图形通过四个中点缩放后的坐标

Name Type Description
coordinates Array

坐标数组

direction String

方向

extent Extent

图形extent范围

startPoint Point

移动前的点

movePoint Point

移动后的点

oriCoordinates Point

图形原始坐标

Returns:
Type Description
Number 缩放后的坐标

inherited getPanCoordinates(coordinates, deltaX, deltaY, pointType, extent){Number}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 1993

获取平移后的坐标

Name Type Description
coordinates Array

坐标数组

deltaX Number

x轴偏移量

deltaY Number

y轴偏移量

pointType Number

点属性类型

extent Number

点所在范围

Returns:
Type Description
Number 平移后的坐标

inherited getScaleCoordinates(coordinates, direction, extent, startPoint, movePoint, oriCoordinates){Number}

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 2023

获取图形通过四个顶点缩放后的坐标

Name Type Description
coordinates Array

坐标数组

direction String

方向

extent Extent

图形extent范围

startPoint Point

移动前的点

movePoint Point

移动后的点

oriCoordinates Point

图形原始坐标

Returns:
Type Description
Number 缩放后的坐标

inherited removeDrawTool()

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 1922

清除草图绘制工具

removeVertex(index){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 783

移除当前棱柱或棱锥底面的指定顶点。

具体移除逻辑由父类区绘制工具实现,本方法保持棱柱工具的统一调用入口。

Name Type Description
index Number

需要移除的顶点索引值,索引值从 0 开始。

Returns:
Type Description
void

selectFeature(feature){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 242

选中棱柱或棱锥草图要素。

选中时同步缓存当前实体要素和拉伸高度,然后交由父类加载整体编辑辅助图形。

Name Type Description
feature Feature

被选中的草图要素。

Returns:
Type Description
void

inherited selectFeatureRotate(feature)

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 3814

选中feature图形旋转

Name Type Description
feature Feature

被选中feature对象

selectFeatureVertex(feature){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 257

进入棱柱或棱锥顶点编辑状态。

该方法会清理整体编辑辅助图形,并重新创建顶点、中点和高度控制点辅助图形; 如果配置了撤销重做管理器,会记录本次编辑状态切换前后的辅助图形变更。

Name Type Description
feature Feature

被选中的草图要素。

Returns:
Type Description
void

inherited setSketchStyle(sketchStyle)

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 1742

设置草图样式

Name Type Description
sketchStyle SketchStyle

inherited setSnapAndReferGeometries(geometries)

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 2874

设置捕获和线造区边界参考几何图形集合

Name Type Description
geometries Array.<Geometry>

可选,几何图形集合。

inherited setSnapFeatures(features)

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 3808

设置捕获和线造区边界参考几何图形集合

Name Type Description
features Array.<Geometry>

可选,几何图形集合。

inherited start()

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 176

开始绘制草图

inherited startPanGraphics(feature, event)

sketchEditor/base/drawTools/SketchPolygonDrawTool.js, line 740

平移图形

Name Type Description
feature Feature

被选中feature对象

event Object

拾取事件

inherited stop()

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 189

停止绘制草图

inherited updateFeature(point, feature)

sketchEditor/base/drawTools/SketchBaseDrawTool.js, line 1900

更新feature

Name Type Description
point Point

待更新的位置

feature Feature

被更新的feature

updateVertex(point, index){void}

sketchEditor/base/drawTools/SketchPrismDrawTool.js, line 769

更新当前棱柱或棱锥底面的指定顶点。

具体更新逻辑由父类区绘制工具实现,本方法保持棱柱工具的统一调用入口。

Name Type Description
point Point

新的顶点。

index Number

需要更新的顶点索引值,索引值从 0 开始。

Returns:
Type Description
void