< !DOCTYPE html >

    <html xmlns = "http://www.w3.org/1999/xhtml" >

    <head >

    meta http - equiv = "Content-Type"content = "text/html; charset=utf-8" / >

    <title > WebGIS < /title>

    <link rel="stylesheet" type="text/css " href="https: //js.arcgis.com/3.21/dijit/themes/tundra/tundra.css"/>
< link rel = "stylesheet"type = "text/css"href = "https://js.arcgis.com/3.21/esri/css/esri.css" / > <script type = "text/Javascript"src = "https://js.arcgis.com/3.21/init.js" > </script> <style type="text/css "> .MapClass{ width:100%; height:500px; border:1px solid #000; } </style> <script type="text / javascript ">
require(["esri / map ",
"dojo / on ",
"dojo / query ",
"esri / layers / ArcGISDynamicMapServiceLayer ",
"esri / toolbars / draw ",
"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,query, ArcGISDynamicMapServiceLayer, Draw,FeatureLayer,Graphic,Add,Delete,Update,Query,jsonUtil) {
var map = new esri.Map("MyMapDiv "); var layer = new ArcGISDynamicMapServiceLayer("http: //localhoust:6080/arcgis/rest/services/2000/MapServer");
map.addLayer(layer); //用于操作的要素图层
var featureLayer = new FeatureLayer("http://localhoust:6080/arcgis/rest/services/2000/FeatureServer/13", { 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(223614); break; case "查询要素": //用于查询要素的函数,查询主键为36的要素
searchFeather(1); break; } }); //当画图完毕时,添加要素
on(d, "draw-complete",
function(result) { //要素只赋予了geometry,属性信息为空
var graphic = new Graphic(result.geometry, null, {});
graphic.attributes.add(""); var add = new Add({ "featureLayer": featureLayer,
//给哪一个要素图层添加要素
"addedGraphics": [graphic] //用于添加的要素
}) //执行添加函数
add.performRedo(); //刷新视图
layer.refresh(); //关闭绘图对象
d.deactivate(); }); //根据id修改要素
function updateFeature(id) { //注意:(第二个参数)这里传入一个回调函数,用于处理查询出来的数据
searchFeather(id,
function(result) { //获得旧的要素
var oldgraphic = result[0]; //新的要素
var newgraphic = new Graphic(oldgraphic.toJson()); //此处可以Draw重新画图
//var newgraphic=new Graphic(newGeometry,null,newAttributes); var newAttributes = newgraphic.attributes;
newAttributes.MAINPERSON = "Wxz"newgraphic.attributes = newAttributes; //创建更新对象
var update = new Update({ "featureLayer": featureLayer, "postUpdatedGraphics": [newgraphic],
//修改之后的要素
"preUpdatedGraphics": [oldgraphic] //修改之前的要素
}) //执行刷新操作
update.performRedo(); //刷新视图
layer.refresh(); alert("修改成功"); }) } //根据id查询要素
function searchFeather(id, callback) { //得到要素图层的主键属性
var idProperty = featureLayer.objectIdField; //定义查询参数
var query = new Query(); //是否返回几何形状
query.returnGeometry = false; //图层的主键名称(根据自己要求修改)
query.objectIds = [id]; //查询条件1=1意思是:只根据主键查询,忽略where子句
query.where = "1=1"; //进行查询
featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW,
function(result) { //如果callback不存在,说明仅仅是查询操作
if (!callback) { //因为我们根据主键查询,一定只有一个元素
var graphic = result[0]; //获得属性
var attributes = graphic.attributes; //得到该属性信息转换成字符串
var result = jsonUtil.stringify(attributes) //将结果弹出一下
alert(result); } else //如果callback存在,说明是更新操作
{ callback(result); } }); } });   < /script>
</head > <body > <div id = "MyMapDiv"class = "MapClass" > </div>
<button class="btn">添加要素</button > <button class = "btn" > 删除要素 < /button>
<button class="btn">修改要素</button > <button class = "btn" > 查询要素 < /button>
</body > </html>

Arcgis api for js实现服务端地图的增删改查的更多相关文章

  1. springboot+layui实现PC端用户的增删改查 & 整合mui实现app端的自动登录和用户的上拉加载 & HBuilder打包app并在手机端下载安装

    springboot整合web开发的各个组件在前面已经有详细的介绍,下面是用springboot整合layui实现了基本的增删改查. 同时在学习mui开发app,也就用mui实现了一个简单的自动登录和 ...

  2. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查

    前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...

  3. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(二)

    前言:上篇 JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) 介绍了下knockout.js的一些基础用法,由于篇幅的关系,所以只能分成两篇,望见谅!昨天就 ...

  4. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)

    前言:出于某种原因,需要学习下Knockout.js,这个组件很早前听说过,但一直没尝试使用,这两天学习了下,觉得它真心不错,双向绑定的机制简直太爽了.今天打算结合bootstrapTable和Kno ...

  5. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...

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

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

  7. JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能

    JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...

  8. 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作

    页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...

  9. vue.js+element ui Table+spring boot增删改查

    小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...

随机推荐

  1. pikachu 搭建

    一:首先下载XAMPP 1.先到官方网站安装XAMPP  https://www.apachefriends.org/zh_cn/index.html 选择适合自己的电脑系统下载,本次windows系 ...

  2. Oracle调用Java方法(下)复杂Jar包封装成Oracle方法以及ORA-29521错误

    上一篇随笔中已经说了简单的Jar是如何封装的,但是我的需求是根据TIPTOP的查询条件产生XML文件并上传到FTP主机中,那么就要涉及到XML生成的方法和FTP上传的方法 所以在Eclipse写的时候 ...

  3. 阿里druid数据源属性配置表

    https://cloud.tencent.com/developer/article/1368903 DRUID 属性说明表 属性(Parameter) 默认值(Default) 描述(Descri ...

  4. vue-elemnt-admin源码学习

    vue-elemnt-admin源码学习 vue-element-admin是一个基于vue,element-ui的集成的管理后台.它的安装部分就不说了,按照官网的步骤一步步就可以执行了. https ...

  5. 学习Java的Day05

    知识点 关键字,常用类(super,static,final): super 子类对父类的引用,只能在非静态方法中使用 引用父类的成员变量的格式为 super.成员变量名称 引用父类的非静态方法的格式 ...

  6. 数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

    热门资讯 1.Stackoverflow 2020年度报告出炉!开发者最喜爱的数据库是什么?[摘要]2020年2月,近6.5万名开发者参与了 Stackoverflow 的 2020 年度调查,这份报 ...

  7. 一文说通MongoDB via Python操作

    Python并不仅仅是一个做Machine Learning的语言.   说到Python,一般都会感觉它关联着ML,如果不是做ML开发,就会觉得离自己很远.而实际上,作为一门语言,Python在应用 ...

  8. js element类型的属性和方法整理

    Element类型 除了Document类型,我们Web编程中最常用的类型就是Element类型啦.Element 类型用于表现XML或HTML元素,提供了对元素标签名,子节点,特性的访问 特征 no ...

  9. 基于图嵌入的高斯混合变分自编码器的深度聚类(Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG)

    基于图嵌入的高斯混合变分自编码器的深度聚类 Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedd ...

  10. 11.unity3d 摄像机快速定位到Scene视角

    选中Camera,比如Main Camera摄像机,在菜单选择GameObject->Align With View就可以了.如下图所示,参照前三步操作,第4步是最终效果.