此类使用不同的 events 来生成一组顶点,以使用 Draw 创建新的 Polyline。调用 draw.create("polyline") 时,将返回对此类的引用。您可以监听 PolylineDrawAction 实例上的 events ,该实例允许用户创建符合开发人员指定条件的折线。
function enableCreatePolyline(draw, view) {
let action = draw.create("polyline");
// 监听 PolylineDrawAction.vertex-add
// 当用户点击或按下“F”键时触发
// 也可以在按下“R”键重做时触发。
action.on("vertex-add", function (evt) {
createPolylineGraphic(evt.vertices);
});
// 监听 PolylineDrawAction.vertex-remove
// 当按下“Z”键撤消
// 最后添加的顶点
action.on("vertex-remove", function (evt) {
createPolylineGraphic(evt.vertices);
});
// 监听 PolylineDrawAction.cursor-update
// 当指针在视图上移动时触发
action.on("cursor-update", function (evt) {
createPolylineGraphic(evt.vertices);
});
// 监听 PolylineDrawAction.draw-complete
// 当用户双击视图或按下“C”键时
// 创建图形的事件
action.on("draw-complete", function (evt) {
createPolylineGraphic(evt.vertices);
});
}
function createPolylineGraphic(vertices){
view.graphics.removeAll();
let polyline = {
type: "polyline", // 转换成 Polyline
paths: vertices,
spatialReference: view.spatialReference
};
let graphic = new Graphic({
geometry: polyline,
symbol: {
type: "simple-line", // 转换成 SimpleLineSymbol
color: [4, 90, 141],
width: 3,
cap: "round",
join: "round"
}
});
view.graphic.add(graphic);
}
构造函数
属性列表
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
String | 更多信息 类名。 | 更多信息 | Accessor | |
Boolean | 更多信息 控制创建的几何图形是否具有 z 坐标。 | 更多信息 | DrawAction | |
String | 更多信息 绘图模式。 | 更多信息 | PolylineDrawAction | |
Number[][] | 更多信息 数字的二维数组,表示组成正在绘制的几何图形的每个顶点的坐标。 | 更多信息 | DrawAction | |
MapView | 更多信息 对 MapView 的引用。 | 更多信息 | DrawAction |
属性详细说明
-
起始版本: GeoScene API for JavaScript 4.22
-
类名。类的名称声明格式为
geoscene.folder.className
。
-
控制创建的几何图形是否具有 z 坐标。
- 默认值:true
-
mode String起始版本: GeoScene API for JavaScript 4.22
-
绘图模式。 它仅在首次创建操作时才相关。 它的值在操作生命周期内不能更改。
可选值
值 描述 hybrid 在单击或拖动指针时添加顶点。 freehand 在拖动指针时添加顶点。 click 单击指针时添加顶点。 可选值:"hybrid"|"freehand"|"click"
- 默认值:hybrid
示例代码:draw.create("polyline", {mode: "freehand"});
-
数字的二维数组,表示组成正在绘制的几何图形的每个顶点的坐标。
-
对 MapView 的引用。
方法列表
属性 | 返回值类型 | 描述 | 类 | |
---|---|---|---|---|
Boolean | 更多信息 指示是否可以在操作实例上调用 redo() 方法。 | 更多信息 | DrawAction | |
Boolean | 更多信息 指示是否可以在操作实例上调用 undo() 方法。 | 更多信息 | DrawAction | |
更多信息 完成绘制折线几何并触发 draw-complete 事件。 | 更多信息 | PolylineDrawAction | ||
Boolean | 更多信息 在实例上触发事件。 | 更多信息 | DrawAction | |
FromScreenPointResult|null | 更多信息 将给定的屏幕点映射到地图点。 | 更多信息 | DrawAction | |
Number[]|null | 更多信息 将给定的屏幕点映射到地图点。 | 更多信息 | DrawAction | |
Boolean | 更多信息 指示实例上是否存在与提供的事件名称匹配的事件侦听器。 | 更多信息 | DrawAction | |
Object | 更多信息 在实例上注册事件处理程序。 | 更多信息 | DrawAction | |
更多信息 增量重做堆栈中记录的操作。 | 更多信息 | DrawAction | ||
Point|null | 更多信息 将给定的屏幕点映射到地图点。 | 更多信息 | DrawAction | |
更多信息 逐步撤消堆栈中记录的操作。 | 更多信息 | DrawAction |
方法详细说明
-
complete()
-
完成绘制折线几何并触发 draw-complete 事件。如果绘图逻辑需要通过双击或按“C”键以外的方式完成,则调用此方法。
-
在实例上触发事件。仅当创建此类的子类时才应使用此方法。
参数:type String事件名称
event Objectoptional事件负载。
返回值:类型 描述 Boolean 如果侦听器收到通知,则为 true
-
-
将给定的屏幕点映射到地图点。
参数:screenPoint ScreenPoint屏幕上的位置。
返回值:类型 描述 FromScreenPointResult | null 包含的结果对象,如果无法映射屏幕点,则返回 null
。
-
将给定的屏幕点映射到地图点。
参数:screenPoint ScreenPoint屏幕上的位置。
返回值:类型 描述 Number[] | null 与给定屏幕点关联的点的 x、y 和 z 分量数组(如果启用了 hasZ),如果无法映射屏幕点,则为 null
。
-
在实例上注册事件处理程序。调用此方法将事件与侦听器挂钩
参数:要监听的event 或者事件数组
listener Function事件触发时要调用的函数
返回值:类型 描述 Object 返回一个 remove()
方法的事件处理程序,该方法用以停止侦听事件。属性 类型 描述 remove Function 当被调用时,从事件中移除监听器。 示例代码:view.on("click", function(event){ // event是事件触发后返回的事件句柄。 console.log(event.mapPoint); });
-
redo()inherited
-
增量重做堆栈中记录的操作。在调用此方法之前调用 canRedo() 以检查是否可以在操作实例上调用此方法。 调用此方法将触发 vertex-add 或 vertex-remove 事件,具体取决于最后一个操作。
示例代码:if (action.canRedo()) { action.redo(); }
-
将给定的屏幕点映射到地图点。
参数:screenPoint ScreenPoint屏幕上的位置。
返回值:类型 描述 Point | null MapPoint 与给定的屏幕点关联,如果屏幕点无法映射,则为 null。
-
undo()inherited
-
逐步撤消堆栈中记录的操作。 在调用此方法之前调用 canUndo() 以检查是否可以在操作实例上调用此方法。 调用此方法将触发 vertex-add 或 vertex-remove 事件,具体取决于最后一个操作。
示例代码:if (action.canUndo()) { action.undo(); }
Event Overview
属性 | 类型 | 描述 | 类 | |
---|---|---|---|---|
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "cursor-update"} |
更多信息
指针在视图上移动后触发。 |
更多信息 | PolylineDrawAction | |
{vertices: Number[][],preventDefault: Function,defaultPrevented: Boolean,type: "draw-complete"} |
更多信息
在用户完成多段线绘制后触发。 |
更多信息 | PolylineDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: String} |
更多信息
在响应重做操作或调用 redo() 时触发。 |
更多信息 | PolylineDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: String} |
更多信息
在响应撤消操作或调用 undo() 时触发。 |
更多信息 | PolylineDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "vertex-add"} |
更多信息
添加顶点时触发。 |
更多信息 | PolylineDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "vertex-remove"} |
更多信息
移除顶点时触发。 |
更多信息 | PolylineDrawAction |
Event Details
-
cursor-update
-
指针在视图上移动后触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
vertexIndex Number添加到顶点数组的最后一个顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件类型
该值通常是 "cursor-update".
示例代码:// 当指针在视图上移动时,向用户提供视觉反馈。 action.on("cursor-update", function (evt) { view.graphics.removeAll(); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(polyline); view.graphics.add(graphic); });
-
draw-complete
-
在用户完成多段线绘制后触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件类型
该值通常是 "draw-complete".
示例代码:// 监听 PolylineDrawAction.draw-complete // 将表示完成的折线的图形 // 添加到视图中 action.on("draw-complete", function (evt) { removeGraphic(graphic); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); graphic = createGraphic(polyline); view.graphics.add(graphic); });
-
redo起始版本: GeoScene API for JavaScript 4.22
-
在响应重做操作或调用 redo() 时触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
vertexIndex Number应用
redo
的顶点的索引。preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。 对于此事件,重做的事件类型。 例如,如果由于
redo
而添加了顶点,则类型将是vertex-add
。
示例代码:// 更新视图上的图形,因为最后一个操作被重做 action.on("redo", function (evt) { view.graphics.removeAll(); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(polyline); view.graphics.add(graphic); });
-
undo起始版本: GeoScene API for JavaScript 4.22
-
在响应撤消操作或调用 undo() 时触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
vertexIndex Number应用
undo
的顶点的索引。preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。对于此事件,请键入已撤消的事件。 例如,如果顶点由于
undo
而被删除,则类型将是vertex-remove
。
示例代码:// 更新视图上的图形,因为最后一个操作被撤消 action.on("undo", function (evt) { view.graphics.removeAll(); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(polyline); view.graphics.add(graphic); });
-
vertex-add
-
添加顶点时触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
vertexIndex Number添加到顶点数组的最后一个顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件类型
该值通常是 "vertex-add".
示例代码:// 添加顶点时触发。 action.on("vertex-add", function (evt) { view.graphics.removeAll(); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(polyline); view.graphics.add(graphic); });
-
vertex-remove
-
移除顶点时触发。
- 属性:
-
二维数字数组,表示构成几何的每个顶点的坐标。
vertexIndex Number从顶点数组中移除的顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件类型
该值通常是 "vertex-remove".
示例代码:// 当顶点被移除时更新视图上的图形 action.on("vertex-remove", function (evt) { view.graphics.removeAll(); let polyline = new Polyline({ paths: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(polyline); view.graphics.add(graphic); });