0、获取要编辑的图层,并加载到的视图上
self.editLayerServer = new FeatureLayer({
url: self.editLayerUrl,
title: '待编辑图层',
id: 'polygonMapServer',
layerCNName: '待编辑图层',
})
self.mapView.map.add(self.editLayerServer);
1、删除
//删除要素---根据objectId进行删除(editLayerServer为要编辑的矢量图层)
_deleteSelFeature() {
const self = this
self.$confirm('此操作将永久删除, 是否继续?', '提示', {
cancelButtonClass: 'btn-custom-cancel',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (self.featureSel) {//featureSel选中要删除的数据
let attributes = self.featureSel.attributes
const deleteFeatures = [{ objectId: attributes.OBJECTID },];
self.editLayerServer.applyEdits({ deleteFeatures: deleteFeatures })
.then(res => {
if (res.deleteFeatureResults.length >= 0) {
self.$message({ type: 'success', message: '删除成功!' });
}
})
}
}).catch(() => {
self.$message({
type: 'info',
message: '已取消删除'
});
});
},
2、添加/编辑要素
//添加+编辑
_layerOperation(type) {
const self = this
let geometry = self.newGeometry//新绘制的图形
switch (type) {
case "添加":
//设置添加要素的图形+属性(有的属性值不允许为空,接口返回中有相关的错误提示code:1016)
const addFeature = new self.Graphic({
geometry: geometry,
attributes: self.attributesForm
});
self.edits = { addFeatures: [addFeature] }
break;
case "编辑":
//updateFeatures的格式为updateFeatures=[{geometry:geometry,attributes:attributes}]
if (self.edits != null) {
if (geometry != null) {
self.edits.updateFeatures[0].geometry = geometry
}
//循环保证objectid+shape字段不变
for (let key in self.attributesForm) {
self.edits.updateFeatures[0].attributes[key] = self.attributesList[key]
}
}
break;
}
self.updataApplyEdits(self.edits)
},
//图层修改
updataApplyEdits(params) {
let self = this
self.editLayerServer.applyEdits(params)
.then((editsResult) => {
//图层添加
if (editsResult.updateFeatureResults.length > 0) {
self.editLayerServer.refresh()
}
//图层编辑
if (editsResult.addFeatureResults.length > 0) {
self.editLayerServer.refresh()
}
}).then((v) => {
self.$message({message: "入库成功!",type: "success",duration: 1500})
})
},