Draw 类可为需要完全控制以创建不同几何的临时图形的开发人员提供高级绘图功能。例如,如果您想阻止用户绘制带有自相交线或重叠多边形的图形,则可使用此类来实现这些规则。绘制体验是建立在绘制操作之上的,绘制操作使用视图事件来生成一组坐标来创建新的几何图形。每个几何类型都具有一个对应的绘制操作类。
此类提供了一个简单的接口来与绘制操作进行交互。初始化 Draw 实例后,您可调用 create() 以返回对相关绘图操作的引用。然后可以使用此绘制操作来创建指定类型的新几何。
下表描述了用于绘制点、折线和多边形的指针和键盘手势。
绘制点
手势 | 操作 |
---|---|
左键单击 | 在指针位置处添加一个点。 |
Enter | 在指针位置处添加一个点。 |
绘制折线和多边形
手势 | 操作 |
---|---|
左键单击 | 在指针位置处添加折点。 |
向左拖动 | 为每个指针移动添加一个折点。 |
Enter | 完成折线或多边形。 |
F | 向折线或多边形添加一个折点。 |
Z | 逐步撤消堆栈中记录的操作。 |
R | 逐步重做堆栈中记录的操作。 |
要为用户提供更简单的绘制体验,请使用 SketchViewModel 类。
- 另请参阅
// create a new instance of draw
let draw = new Draw({
view: view
});
// create an instance of draw polyline action
// the polyline vertices will be only added when
// the pointer is clicked on the view
let action = draw.create("polyline", {mode: "click"});
// fires when a vertex is added
action.on("vertex-add", function (evt) {
measureLine(evt.vertices);
});
// fires when the pointer moves
action.on("cursor-update", function (evt) {
measureLine(evt.vertices);
});
// fires when the drawing is completed
action.on("draw-complete", function (evt) {
measureLine(evt.vertices);
});
// fires when a vertex is removed
action.on("vertex-remove", function (evt) {
measureLine(evt.vertices);
});
function measureLine(vertices) {
view.graphics.removeAll();
let line = createLine(vertices);
let lineLength = geometryEngine.geodesicLength(line, "miles");
let graphic = createGraphic(line);
view.graphics.add(graphic);
}
function createLine(vertices) {
let polyline = {
type: "polyline", // autocasts as new Polyline()
paths: vertices,
spatialReference: view.spatialReference
}
return polyline;
}
构造函数
属性概述
名称 | 类型 | 描述 | 类 |
---|---|---|---|
DrawAction | 对活动的绘制操作的引用。 更多详情 | Draw | |
String | 类的名称。 更多详情 | Accessor | |
MapView | 对 MapView 的引用。 更多详情 | Draw |
属性详细信息
-
activeAction DrawAction
-
-
起始版本:GeoScene Maps SDK for JavaScript 4.7
-
类的名称。声明的类名称格式化为
geoscene.folder.className
。
方法概述
名称 | 返回值类值 | 描述 | 类 |
---|---|---|---|
添加一个或多个与对象的生命周期相关联的句柄。 更多详情 | Accessor | ||
完成当前活动的绘制。 更多详情 | Draw | ||
DrawAction | 创建请求的绘制操作的实例。 更多详情 | Draw | |
Boolean | 如果存在指定的句柄组,则返回 true。 更多详情 | Accessor | |
移除对象拥有的句柄组。 更多详情 | Accessor | ||
通过清除活动操作来重置绘制。 更多详情 | Draw |
方法详细说明
-
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()起始版本:GeoScene Maps SDK for JavaScript 4.7
-
完成当前活动的绘制。
-
create(drawAction, drawOptions){DrawAction}
-
创建请求的绘制操作的实例。
参数drawAction String要创建的绘制操作的名称。有关可能值列表和它创建的绘制操作类型,请参见下表。
可能值
几何类型 绘制操作实例 point PointDrawAction multipoint MultipointDrawAction (仅在 MapView 中受支持) polyline PolylineDrawAction polygon PolygonDrawAction rectangle, circle, ellipse SegmentDrawAction 可能值:"point"|"multipoint"|"polyline"|"polygon"|"rectangle"|"circle"|"ellipse"
drawOptions Objectoptional要创建的几何的绘制选项对象。
规范mode Stringoptional绘图模式。绘图模式仅在创建
polygon
、polyline
、segment
绘制操作时适用。可能值
值 描述 hybrid 在单击或拖动指针时添加折点。适用于 polygon
和polyline
绘制操作,并且是默认设置。freehand 在拖动指针时添加折点。适用于 polygon
、polyline
和segment
绘制操作。segment
绘制操作的默认值。click 单击指针时会添加折点。 可能值:"hybrid"|"freehand"|"click"
返回类型 描述 DrawAction 返回请求的绘制操作的实例。 示例let pointAction = draw.create("point");
-
起始版本: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"); }
-
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");
-
reset()起始版本:GeoScene Maps SDK for JavaScript 4.6
-
通过清除活动操作来重置绘制。