两种方式:

第一种

要素服务的增删改操作,在ArcGIS API for JS中给我们提供了三个类用于要素的增Add,删Delete,改Update

添加draw和要素服务

//用于操作的要素图层,注意我们是操作的宿舍楼图层
var featureLayer = new FeatureLayer("http://localhost:6080/arcgis/rest/services/Test/ft/FeatureServer/1",
{
mode:FeatureLayer.MODE_SNAPSHOT,
outFields: ["*"]
});
//在添加要素时,利用Draw工具获得geometry对象
var d = new Draw(map, { showTooltips: true });
//要操作的graphic
var g;
   query("button").on("click",function(event){
//获得按钮的文本
var value=this.innerHTML;
//根据文本绑定不同的事件
switch(value){
case "添加要素":
d.activate(Draw.POLYGON);
break;
case "删除要素":
//创建Graphic对象,删除OBJECTID为34的元素,
//因为OBJECTID是主键,所以只需要指定主键即可
g=new Graphic("","",{
"OBJECTID":34
});
//创建删除对象
var de=new Delete({
"featureLayer":featureLayer,
"deletedGraphics":[g]
});
//执行删除结果
de.performRedo();
//刷新图层
layer.refresh();
break;
case "修改要素":
//用于修改要素的函数,查询更新为36的要素
updateFeature(36);
break;
case "查询要素":
//用于查询要素的函数,查询主键为36的要素
searchFeather(36);
break;
}
});

修改、更新:

var oldUpdateGrapgics;
var updateGrapgics; var selectid = selectArray[0]["OBJECTID"]; var queryTask, query;
queryTask = new esri.tasks.QueryTask(featureURL);
//dojo.connect(queryTask, "onComplete", showResults);
var queryWhere = "OBJECTID=" + selectid;
//build query filter
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["*"];
query.where = queryWhere;
queryTask.execute(query, queryUpdateResults); function queryUpdateResults(results) {
var features = results.features;
oldUpdateGrapgics = features[0];
updateGrapgics = new esri.Graphic(oldUpdateGrapgics.toJson());
//featureAttribution["OBJECTID"] = ;
$("input[name='OBJECTID']").val(updateGrapgics.attributes["OBJECTID"]);
$("input[name='ID']").val(updateGrapgics.attributes["ID"]);
$("input[name='要素代码']").val(updateGrapgics.attributes["要素代码"]);
$("input[name='图斑编号']").val(updateGrapgics.attributes["图斑编号"]);
$("input[name='地类编码']").val(updateGrapgics.attributes["地类编码"]);
$("input[name='城镇用地']").val(updateGrapgics.attributes["城镇用地"]);
} function saveUpdateClick() {
require(["esri/map", "dojo/on",
"esri/layers/FeatureLayer",
"esri/graphic", "esri/dijit/editing/Add",
"esri/dijit/editing/Delete", "esri/dijit/editing/Update", "esri/tasks/query", "dojo/json",
"dojo/domReady!"
],
function(Map, on, FeatureLayer, Graphic, Add, Delete, Update, Query, jsonUtil) {
//console.log($("#attrForm").serialize());
// attributes =$("#attrForm").serializeObject(); //将表单序列化为JSON对象
//console.log(attributes);
// updateGrapgics.setAttributes(attributes);
// editFeatureLayer.applyEdits(null, [updateGrapgics], null);
updateGrapgics.attributes['要素代码'] = getValueOrNULL($("input[name='要素代码']").val());
updateGrapgics.attributes['图斑编号'] = getValueOrNULL($("input[name='图斑编号']").val());
updateGrapgics.attributes['城镇用地'] = getValueOrNULL($("input[name='城镇用地']").val()); var update = new Update({
"featureLayer": editFeatureLayer,
"postUpdatedGraphics": [updateGrapgics], //修改之后的要素
"preUpdatedGraphics": [oldUpdateGrapgics] //修改之前的要素
}); update.performRedo();
//刷新视图
editFeatureLayer.refresh();
alert("修改成功");
});
}

删除

var selectid = selectArray[0].OBJECTID;
var selectids = [];
selectids.push(selectid); $("#table").bootstrapTable('remove', {
field: 'OBJECTID',
values: selectids
});
//queryFeaturesByWhere();
var queryTask, query;
queryTask = new esri.tasks.QueryTask(featureURL);
//dojo.connect(queryTask, "onComplete", showResults);
var queryWhere = "OBJECTID=" + selectid;
//build query filter
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["*"];
query.where = queryWhere;
queryTask.execute(query, deleteResults); function deleteResults(results) {
var gs = results.features;
editFeatureLayer.applyEdits(null, null, gs, function(evt) {
console.log(evt);
// alert("删除成功");
});
// return features;
}

第二种:

FeatureLayer.applyEdits函数说明

applyEdits函数是FeatureLayer类中的一个方法,主要作用是修改featurelayer的要素,但仅对要素服务(feature service)

函数形式:applyEdits(adds?, updates?, deletes?, callback?, errback?)

返回类型:dojo.Deferred

参数表:

1)<Graphic[]> adds 可选项 要被添加到要素服务中的图层中的要素数组。新要素通常由Draw工具条创建。

2)<Graphic[]> updates 可选项 几何对象和属性有所改变的要素数组。要素必须有一个有效的OBJECTID。要素的几何对象通常由Edit工具条修改。属性使用Attribute Inspector修改。

3)<Graphic[]> deletes 可选项 待删除的要素数组,这些要素必须有有效的OBJECTID。

4)<Function> callback 可选项 当操作完成时本函数会被调用。传给本函数的参数和onEditsComplete事件中的一样。

5)<Function> callback 可选项 如果有错误发生将会返回一个错误对象。

例子:

//更新
require([
"esri/layers/FeatureLayer", ...
], function(FeatureLayer, ... ) {
var firePerimeterFL = new FeatureLayer( ... );
var targetGraphic = firePerimeterFL.getSelectedFeatures()[0].setGeometry(reshapedGeometry);
firePerimeterFL.applyEdits(null, [targetGraphic], null);
...
});
//删除       
function initSelectToolbar(evt) {
var petroFieldsFL = evt.layers[0].layer; petroFieldsFL.on("dbl-click", function(evt) {
event.stop(evt);
petroFieldsFL.applyEdits(null, null, [evt.graphic]);
}); }

arcgis 要素服务增删改查的更多相关文章

  1. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  2. WCFRESTFul服务搭建及实现增删改查

    WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格,  RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...

  3. 基于SpringBoot开发一个Restful服务,实现增删改查功能

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  4. 使用HttpClient对ASP.NET Web API服务实现增删改查

    本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序&quo ...

  5. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  6. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  7. Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作

    一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...

  8. AngularJS的增删改查、state嵌套案例,不涉及服务端

    本篇实践一个案例,大致是:左边有导航菜单,右边显示列表,并可对列表项编辑或删除,也可添加新的列表项.借此,可体会到:如何组织可扩展的AngualrJS文件结构,如何点击左侧菜单项右侧显示相应内容,an ...

  9. WFS1.1.0协议(增删改查)+openlayers4.3.1前端构建+geoserver2.15.1安装部署+shpfile数据源配置

    WFS简介 1.WFS即,Web要素服务,全称WebFeatureService.GIS下,支持对地理要素的插入,更新,删除,检索和发现服务. 2.属于OGC标准下的通信协议.OGC标准下的GIS服务 ...

随机推荐

  1. 接口作为方法的参数或返回值——List接口

    接口作为方法的参数或返回值,源码可知,List为一个接口,ArraryList是的它的实现类: 其中,addNames方法中,入参和返回值都List接口,入参是多态的,编译看左,运行看右(访问成员方法 ...

  2. android使用inject需要注意的地方

    android使用inject需要注意的地方1.viewmodel里面添加注解@Inject FavoritesDBManager mFavoritesDBManager; 2.Component里面 ...

  3. POJ 2492 A Bug's Life (并查集)

    Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...

  4. What Would you Find out about MS908CV ?

    The Autel MaxiSYS commercial car diagnostics scan device, No. MS908CV, performs increased technique ...

  5. Django框架----分页器(paginator)

    Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...

  6. 同行span标签设置display:inline-block;overflow:hidden垂直对齐问题

    1 问题描述:一个div包含 三个span 当span2 类样式设置如下图时,将导致垂直方向不对齐的情况 2解决方案: 将前面的也设置同样的样式 overflow:hidden; display:in ...

  7. 海瑞菌的web前端学习直播间

    这是本人的web前端学习直播间 一般每天晚上10点--12点为直播时间...以web前端开发为主. 若设备无法打开,请点击链接进入:https://www.huya.com/14958154 setT ...

  8. 安装虚拟环境virtualenvwrapper和django

    以下操作在windows平台进行 1.安装虚拟环境virtualenvwrapper 首先需要安装python管理工具pip,安装完python3.7之后自带了pip,可通过where pip查看管理 ...

  9. linux下mysql 8.0安装

    安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...

  10. mysql 水平分表技术

    这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...