我正在尝试使用具有撤消、重做功能的 ArcGIS 10.2 JavaScript 3.6 API 来实现多边形联合操作。我能够执行联合操作,但是当我尝试撤消操作时,我收到以下错误:
http://js.arcgis.com/3.6/js/esri/dijit/editing/Cut.js中第 19 行第 1879 列未处理的异常
0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“长度”
代码片段:
dojo.connect(dijit.byId("Merge_Button"), "onClick", function () {
editing_function = "Merge_From";
document.getElementById("Status_Message").innerHTML = "Select Polygon to Merge From"
esri.bundle.toolbars.draw.addPoint = "Select Polygon to Merge From";
drawToolbar.activate(esri.toolbars.Draw.POINT);
});
dojo.connect(drawToolbar, "onDrawEnd", function (geometry) {
if (editing_function == "Merge_From") {
var point_selectQuery = new esri.tasks.Query();
point_selectQuery.geometry = geometry;
edit_featurelayer.selectFeatures(point_selectQuery, esri.layers.FeatureLayer.SELECTION_NEW, function (features) {
if (features.length == 0) {
r = confirm("Nothing Selected. Try again?");
if (r == true) {
return;
}
drawToolbar.deactivate();
document.getElementById("Status_Message").innerHTML = "Nothing exciting going on around here";
return
}
merge_from_features = features;
editing_function = "Merge_To";
document.getElementById("Status_Message").innerHTML = "Select Polygon to Merge To";
esri.bundle.toolbars.draw.addPoint = "Select Polygon to Merge To";
});
return;
}
if (editing_function == "Merge_To") {
var point_selectQuery = new esri.tasks.Query();
point_selectQuery.geometry = geometry;
edit_featurelayer.selectFeatures(point_selectQuery, esri.layers.FeatureLayer.SELECTION_ADD, function (features) {
if (features.length == 0) {
r = confirm("Nothing Selected. Try again?");
if (r == true) {
return;
}
drawToolbar.deactivate();
document.getElementById("Status_Message").innerHTML = "Nothing exciting going on around here";
return
}
merge_to_features = features;
editing_function = "";
document.getElementById("Status_Message").innerHTML = "Nothing exciting going on around here";
drawToolbar.deactivate();
var input_geometries;
try {
var from_g = merge_from_features[0].geometry;
var to_g = merge_to_features[0].geometry;
var input_geometries = [from_g, to_g];
geometryService.union(input_geometries, function (unioned_geometry) {
var merge_from_feature = merge_from_features[0];
var merge_to_feature = merge_to_features[0];
var original_feature = merge_to_feature.toJson();
merge_to_feature.geometry = unioned_geometry;
edit_featurelayer.applyEdits(null, [merge_to_feature], [merge_from_feature], function () {
try {
var operation = new esri.dijit.editing.Union({
deleted_graphics: [merge_from_feature],
featureLayer: edit_featurelayer,
preUpdatedGraphics: new esri.Graphic(original_feature),
postUpdatedGraphics: [merge_to_feature]
});
}
catch (err) {
alert(err.message);
};
undoManager.add(operation);
checkUI();
});
});
}
catch (err) {
alert(err.message);
};
});
return;
};
drawToolbar.deactivate();
});