利用leaflet-geoman-free插件绘制了一个多边形,调用EditFeaturesParameters、featureService等类将绘制的多边形提交至iserver服务器成功了,但是编辑已经存在于iserver的多边形提交就失败了,不知道怎么弄,删除也不知道怎么弄,求大神指点
附上代码:
一、
// 监听编辑事件
that.lm.on('pm:edit',function (event) {
console.log(event)
var layer = event.layer; // 编辑后的图层
var geometry = layer.toGeoJSON(); //编辑后的几何数据
that.updateGeometryData = geometry
console.log('---2---->>>',geometry)
geometry.properties = {
"SmUserID": "0",
"NAME":"编辑测试",
"TYPE":2,
"PARENT":3
}
})
二、
/**
* 编辑图形并提交至iserver
*/
update(data){
let obj = {
returnContent: true,
features: this.updateGeometryData
}
if (data){
obj.features = data
}
console.log('--->>>',obj)
new DataService().editData(
'update',
iserver.data.xinqu.url,
iserver.data.xinqu.dataSource,
iserver.data.xinqu.dma, obj).then(res => {
console.log('=======>>>>', res)
})
},
三、封装的supermap的方法:
/**
* 编辑数据
* @param url 数据服务url
* @param {'add'|'update'|'delete'} editType 操作类型
* @param {String} datasource 数据源
* @param {String} dataset 数据集
* @param {Object} options 操作参数
* @param {boolean} [options.isUseBatch] 是否使用批量添加要素功能
* @param {L.GeoJSON} [options.features] 当前需要创建或者是修改的要素集。
* @param {string[]|number[]} [options.IDs] 执行删除时要素集 ID 集合
* @param {boolean} [options.returnContent] 要素添加时,isUseBatch 不传或传为 false 的情况下有效。 true 表示直接返回新创建的要素的 ID 数组;false 表示返回创建的 featureResult 资源的 URI。
* @returns {Promise<Object>}
*
*/
editData(editType, url, datasource, dataset, options) {
return new Promise((resolve, reject) => {
// 指定编辑服务参数
var params = new SuperMap.EditFeaturesParameters({
editType: {
add: SuperMap.EditType.ADD,
update: SuperMap.EditType.UPDATE,
delete: SuperMap.EditType.DELETE,
}[editType],
features: options?.features,
IDs: options?.ids,
isUseBatch: options?.isUseBatch,
returnContent: options?.returnContent,
dataSetName: dataset,
dataSourceName: datasource,
});
// 创建编辑实例
new L.supermap.featureService(url).editFeatures(
params,
function (serviceResult) {
// 获取服务器返回的结果
var result = serviceResult.result;
if (result) {
resolve(result);
}
reject(serviceResult);
}
);
});
}