此类使用视图事件来生成一组坐标,以使用 Draw 创建新的 Multipoint 几何。调用 draw.create("multipoint") 方法时,将返回对 MultipointDrawAction 的引用。您可以侦听 MultipointDrawAction 实例上的事件,该实例允许用户创建符合应用程序指定条件的多点。
已知限制
目前,仅在 MapView 中支持 MultipointDrawAction。
function enableCreateMultipoint(draw, view) {
let action = draw.create("multipoint");
// Give a visual feedback to users as they move the pointer over the view
action.on("cursor-update", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Fires when the user clicks, or presses the "F" key on the view
// Can also fire when the "R" key is pressed to redo.
action.on("vertex-add", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Fires when the "Z" key is pressed to undo the last added point
action.on("vertex-remove", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Create a point when user clicks on the view or presses "C" key.
action.on("draw-complete", function (evt) {
createMultipointGraphic(evt.vertices);
});
}
function createMultipointGraphic(vertices) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: vertices,
spatialReference: view.spatialReference
});
graphic = new Graphic({
geometry: multipoint,
symbol: {
type: "simple-marker",
style: "square",
color: "red",
size: "16px",
outline: {
color: [255, 255, 0],
width: 3
}
}
});
view.graphics.add(graphic);
}
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
String | 类的名称。 更多详情 | Accessor | |
Boolean | 控制创建的几何是否具有 z 坐标。 更多详情 | DrawAction | |
Number[][] | 数字的二维数组,表示组成正在绘制的几何图形的每个折点的坐标。 更多详情 | DrawAction | |
MapView | 对 MapView 的引用。 更多详情 | DrawAction |
属性详细信息
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
-
控制创建的几何是否具有 z 坐标。
- 默认值:true
-
数字的二维数组,表示组成正在绘制的几何图形的每个折点的坐标。
-
对 MapView 的引用。
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
Boolean | 指示是否可以在操作实例上调用 redo() 方法。 更多详情 | DrawAction | |
Boolean | 指示是否可以在操作实例上调用 undo() 方法。 更多详情 | DrawAction | |
完成绘制 multipoint 几何并触发 draw-complete 事件。 更多详情 | MultipointDrawAction | ||
Boolean | 在实例上触发事件。 更多详情 | DrawAction | |
FromScreenPointResult|null | 将给定的屏幕点映射到地图点。 更多详情 | DrawAction | |
Number[]|null | 将给定的屏幕点映射到地图点。 更多详情 | DrawAction | |
Boolean | 指示实例上是否存在与提供的事件名称相匹配的事件监听器。 更多详情 | DrawAction | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
Object | 在实例上注册事件处理程序。 更多详情 | DrawAction | |
逐步恢复堆栈中记录的操作。 更多详情 | DrawAction | ||
移除对象拥有的句柄组。 更多详情 | Accessor | ||
Point|null | 将给定的屏幕点映射到地图点。 更多详情 | DrawAction | |
逐步撤消堆栈中记录的操作。 更多详情 | DrawAction |
方法详细说明
-
addHandles(handleOrHandles, groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); // Handle gets removed when the object is destroyed. this.addHandles(handle);
参数handleOrHandles WatchHandle|WatchHandle[]对象销毁后,标记为要移除的句柄。
groupKey *optional标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。
-
complete()
-
完成绘制 multipoint 几何并触发 draw-complete 事件。如果绘图逻辑需要通过双击或按 "C” 键以外的方式完成,则可调用此方法。
-
在实例上触发事件。仅当创建此类的子类时,才应使用此方法。
参数type String事件的名称。
event Objectoptional事件有效负载。
返回类型 描述 Boolean 如果监听器收到通知,则为 true
-
-
将给定的屏幕点映射到地图点。
参数screenPoint ScreenPoint屏幕上的位置。
返回类型 描述 FromScreenPointResult | null 包含的结果对象,如果无法映射屏幕点,则返回 null
。
-
将给定的屏幕点映射到地图点。
参数screenPoint ScreenPoint屏幕上的位置。
返回类型 描述 Number[] | null 与给定屏幕点相关联的点的 x、y 和 z 分量数组 (如果启用了 hasZ),如果无法映射屏幕点,则为 null
。
-
起始版本:GeoScene Maps SDK for JavaScript 4.25
-
如果存在指定的句柄组,则返回 true。
参数groupKey *optional组键。
返回类型 描述 Boolean 如果存在指定的句柄组,则返回 true
。示例// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
在实例上注册事件处理程序。调用此方法将事件与监听器挂钩。
参数要侦听的事件或者事件数组。
listener Function事件触发时要调用的函数。
返回类型 描述 Object 返回具有 remove()
方法的事件处理程序,可调用该方法来停止侦听事件。属性 类型 描述 remove Function 调用时,从事件中移除侦听器。 示例view.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
redo()inherited
-
逐步恢复堆栈中记录的操作。在调用此方法之前调用 canRedo() 以检查是否可以在操作实例上调用此方法。调用此方法将触发 vertex-add 或 vertex-remove 事件,具体取决于最后执行的操作。
示例if (action.canRedo()) { action.redo(); }
-
removeHandles(groupKey)inherited起始版本:GeoScene Maps SDK for JavaScript 4.25
-
移除对象拥有的句柄组。
参数groupKey *optional要移除的组键或组键的数组或集合。
示例obj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");
-
将给定的屏幕点映射到地图点。
参数screenPoint ScreenPoint屏幕上的位置。
返回类型 描述 Point | null MapPoint 与给定的屏幕点相关联,如果屏幕点无法映射,则为 null。
-
undo()inherited
-
逐步撤消堆栈中记录的操作。在调用此方法之前调用 canUndo() 以检查是否可以在操作实例上调用此方法。调用此方法将触发 vertex-add 或 vertex-remove 事件,具体取决于最后执行的操作。
示例if (action.canUndo()) { action.undo(); }
事件概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "cursor-update"} |
指针在视图上移动后触发。 更多详情 |
MultipointDrawAction | |
{vertices: Number[][],preventDefault: Function,defaultPrevented: Boolean,type: "draw-complete"} |
在用户完成 multipoint 绘制后触发。 更多详情 |
MultipointDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: String} |
在响应重做操作或调用 redo() 时触发。 更多详情 |
MultipointDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: String} |
在响应撤消操作或调用 undo() 时触发。 更多详情 |
MultipointDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "vertex-add"} |
将点添加到多点时触发。 更多详情 |
MultipointDrawAction | |
{vertices: Number[][],vertexIndex: Number,preventDefault: Function,defaultPrevented: Boolean,type: "vertex-remove"} |
将点从多点中移除时触发。 更多详情 |
MultipointDrawAction |
事件详细说明
-
cursor-update
-
指针在视图上移动后触发。
- 属性
-
数字的二维数组,表示组成绘制几何图形的每个折点的坐标。
vertexIndex Number添加到顶点数组的最后一个顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。
值通常是 "cursor-update"。
示例// fires when the pointer moves on the view. action.on("cursor-update", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });
-
draw-complete
-
在用户完成 multipoint 绘制后触发。
- 属性
-
数字的二维数组,表示组成绘制几何图形的每个折点的坐标。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。
值总是 "draw-complete"。
示例// fires when completed drawing the multipoint. action.on("draw-complete", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });
-
redo起始版本:GeoScene Maps SDK for JavaScript 4.7
-
在响应重做操作或调用 redo() 时触发。
- 属性
-
数字的二维数组,表示组成几何图形的每个折点的坐标。
vertexIndex Number应用
redo
的顶点的索引。preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。对于此事件,则为重做的事件类型。例如,如果顶点是作为
redo
的结果添加的,则类型将是vertex-add
。
示例// Update the graphic on the view as the last action was redone action.on("redo", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });
-
undo起始版本:GeoScene Maps SDK for JavaScript 4.7
-
在响应撤消操作或调用 undo() 时触发。
- 属性
-
数字的二维数组,表示组成几何图形的每个折点的坐标。
vertexIndex Number应用
undo
的顶点的索引。preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。对于此事件,则为撤销的事件类型。例如,如果顶点是作为
undo
的结果而移除的,则类型将是vertex-remove
。
示例// Update the graphic on the view as the last action was undone action.on("undo", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });
-
vertex-add
-
将点添加到多点时触发。
- 属性
-
数字的二维数组,表示组成绘制几何图形的每个折点的坐标。
vertexIndex Number添加到顶点数组的最后一个顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。
值总是 "vertex-add"。
示例// fires when a point is added to the multipoint. action.on("vertex-add", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });
-
vertex-remove
-
将点从多点中移除时触发。
- 属性
-
数字的二维数组,表示组成绘制几何图形的每个折点的坐标。
vertexIndex Number从顶点数组中移除的顶点的索引。
preventDefault Function防止事件传播在事件链上冒泡。
defaultPrevented Boolean在调用
preventDefault()
时设置为 true。type String事件的类型。
值总是 "vertex-remove"。
示例// fires when a point is removed from multipoint. action.on("vertex-remove", function (evt) { view.graphics.removeAll(); let multipoint = new Multipoint({ points: evt.vertices, spatialReference: view.spatialReference }); let graphic = createGraphic(multipoint); view.graphics.add(graphic); });