- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 undomanager 撤消/重做编辑顶点。
图形对象经过测试。但我不知道该怎么做编辑顶点撤消/重做。
顶点是否可以撤消/重做?
我找了很多例子都没有找到答案。
我是韩国初学者程序员。帮帮我吧~ T.T
function initEditing(evt) {
console.log("initEditing", evt);
var currentLayer = null;
var layers = arrayUtils.map(evt.layers, function(result) {
return result.layer;
console.log("result ==== "+result);
});
console.log("layers", layers);
editToolbar = new Edit(map);
editToolbar.on("deactivate", function(evt) {
console.log("deactivate !!!! ");
currentLayer.applyEdits(null, [evt.graphic], null);
});
arrayUtils.forEach(layers, function(layer) {
var editingEnabled = false;
layer.on("dbl-click", function(evt) {
event.stop(evt);
if (editingEnabled === false) {
editingEnabled = true;
editToolbar.activate(Edit.EDIT_VERTICES , evt.graphic);
pre_evt = evt.graphic;
editToolbar.on("vertex-move-stop", function(evt){
console.log("vertex-move-stop~");
g_evt = evt;
console.log("evt.transform ===== " +evt.transform);
var operation = new esri.dijit.editing.Update({
featureLayer : landusePointLayer,
preUpdatedGraphics:pre_evt,
postUpdatedGraphics: evt.graphic
})
var operation = new CustomOperation.Add({
graphicsLayer: pre_evt._graphicsLayer,
addedGraphic: evt.graphic
});
undoManager.add(operation);
console.log("operation ======== ",operation);
});
console.log("dbl-click & eidt true");
} else {
currentLayer = this;
editToolbar.deactivate();
editingEnabled = false;
console.log("dbl-click & eidt false ");
}
});
最佳答案
您所引用的示例只是让您了解如何使用 UndoManager。如果需要对顶点进行撤消/重做,则需要创建自己的操作。下面我为 AddVertex 提供了一个。您需要为其他操作创建自己的。
define(["dojo/_base/declare",
"esri/OperationBase"],
function(declare,
OperationBase) {
var customOp = {};
customOp.AddVertex = declare(OperationBase, {
label: "Add Vertex",
_editedGraphic: null,
_vertexInfo: null,
_vertex: null,
_editTool: null,
constructor: function (params) {
params = params || {};
if (!params.editTool) {
console.error("no edit toolbar provided");
return;
}
this._editTool = params.editTool;
if (!params.editedGraphic) {
console.error("no graphics provided");
return;
}
this._editedGraphic = params.editedGraphic;
if (!params.vertexinfo) {
console.error("no vertexinfo provided");
return;
}
this._vertexInfo = params.vertexinfo;
var geometry = this._editedGraphic.geometry;
if(geometry.type === "multipoint") {
this._vertex = geometry.getPoint(this._vertexInfo.pointIndex);
} else if(geometry.type === "polyline" || geometry.type === "polygon") {
this._vertex = geometry.getPoint(this._vertexInfo.segmentIndex, this._vertexInfo.pointIndex);
} else {
console.error("Not valid geometry type.");
}
},
performUndo: function () {
var geometry = this._editedGraphic.geometry;
if(geometry.type === "multipoint"){
geometry.removePoint(this._vertexInfo.pointIndex);
} else if(geometry.type === "polyline" || geometry.type === "polygon") {
geometry.removePoint(this._vertexInfo.segmentIndex, this._vertexInfo.pointIndex);
}
this._editedGraphic.draw();
this._editTool.refresh();
},
performRedo: function () {
var geometry = this._editedGraphic.geometry;
if(geometry.type === "multipoint"){
geometry.removePoint(this._vertexInfo.pointIndex, this._vertex);
} else if(geometry.type === "polyline" || geometry.type === "polygon") {
geometry.insertPoint(this._vertexInfo.segmentIndex, this._vertexInfo.pointIndex, this._vertex);
}
this._editedGraphic.draw();
this._editTool.refresh();
}
});
return customOp;
});
确保在停用编辑工具栏时清除 UndoManager。否则,操作将保留。不要将添加图形操作与顶点操作结合起来。它不会工作,因为他们使用不同的工具栏,并且一旦您停用它,编辑工具栏状态就会丢失。
还要注意的一点是,当您使用 UndoManager 时,图形 isModified 状态将始终为 true,因为我们在撤消/重做期间添加和删除顶点,即使撤消所有更改也是如此。因此,请确保您需要通过检查是否有任何待处理的撤消(几何图形确实已修改)来应用编辑。
希望这对您有所帮助。
关于javascript - 如何使用 arcgis javascript 顶点 undoManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559439/
我有两个 shapefile。一种是有交通量数据的街道 map ,另一种是没有交通量的详细街道 map (精确 map )。 当我将带有交通量数据的街道 map 与没有交通量的详细街道 map 进行比
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我注意到 Arc Gis map 渲染速度非常慢。当你缩放时,它呈现得很慢。当您平移时,它呈现缓慢。有没有人有任何关于使 map 呈现速度更快的建议,类似于谷歌地图和微软虚拟地球。 最佳答案 动态 m
我有几个带有大约 100-150 个特征的压缩 shapefile。我正在尝试将它们添加到 ArcGIS Online(每个 shapefile 接受少于 1000 个要素)但无法这样做,这表明压缩的
我正在尝试使用 react-arcgis npm 向 arcgis 添加一个图层, esriPromise(["esri/layers/TileLayer"]).then(([ TileLayer ]
我正在使用 javascript 在 web map 上显示要素图层的标签和要素。要素图层成功在 arcgis 工具中显示标签,而不是在 web map 上显示标签。 谁能帮我解决这个问题吗?我正在尝
我有从驻留在目录托管服务器中的 ArcGIS 生成的形状文件列表,请注意该服务器不是 ArcGIS 服务器并且形状文件未发布。 是否可以使用 ArcGIS JS API 将此形状文件作为图层(要素图层
去年的某个时候,当我们使用 ArcGIS 9.3 时,我在 Visual Studio 2008 中编写了一个 C# 程序来遍历文件夹中的所有 MXD 文件,检查所有图层源,如果错误或不正确则替换它们
是否可以指定 ESRI basemap 图库 (esri/dijit/BasemapGallery) 使用哪些 ArcGIS basemap ? 将 showArcGISBasemaps 设置为 tr
我是 Eclipse 的新手。我打算创建一个 ArcGIS Android 应用程序,但目前我正在逐步学习它。我有一个问题,“ArcGIS Runtime SDK for Android”和“ArcG
如何在启用混淆器的情况下使用 com.esri.arcgis.android:arcgis-android:10.2.6-2?我在努力 -keep class com.esri.** { *; } -
我遵循this guide将ArcGIS map 添加到我的应用程序中,但是没有用。我收到以下错误: Error: Failed to resolve: com.esri.arcgis.android
我正在尝试开发我自己的 map 服务,然后将我生成的图像显示到 ARCGIS map 查看器中......无论如何,我的 *.ashx 服务读取 ARCGIS Tile URL 看起来像“http:/
我在一个多边形 shapefile 中有一个不规则的三角形网格。这些单元格的主题是仅显示高于我的“兴趣”阈值水平的三角形。可见的相邻三角形被认为是真实的。需要删除空间隔离的三角形,因为它们可能是虚假的
我被困住了,试图使用 ArcGIS 绘制一个简单的圆形缓冲区。以下是我设置 basemap 的方法: dojo.require("esri.map"); dojo.require("esri.task
我正在使用 JavaScript 编写一个程序,该程序通过 ArcGIS REST API 连接到本地 ArcGIS 服务器并加载 map 。 获取服务的 URL 是 let xmlhttp = ne
我想开发 Arcgis for android 和 web 服务,但我不知道它有 API 吗?如果有,是否可以在我服务器上收集的经纬度 map 上进行标记(如谷歌地图 API)? 谢谢卡:)) 最佳答
我刚刚偶然发现了 Backgroundworker 对象,它似乎是我正在寻找的工具,可以让我的 GUI 在执行计算时做出响应。我正在为 ArcGIS 编写 IO 插件。 我正在 ArcGIS 之外进行
我正在尝试使用 ArcGIS JavaScript API在 Angular 应用程序中。如我所见,它使用 Dojo。所以,我正在尝试从 Angular 指令初始化 ArcGIS,如下所示: li
在 Microsoft SQL 中,我可以使用 GETDATE() 函数作为 DATETIME 字段的默认值。我希望能够对 ArcGIS 地理数据库中的日期字段执行相同类型的操作。这可能吗,还是我仅限
我是一名优秀的程序员,十分优秀!