< !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. 如何开发一个自己的npm包

    目录 一.初始化npm包 二.新建自己的工具类 三.新建入口文件index.js 四.编写单元测试 五.登录仓库 六.发布包 七.安装使用 八.删除包 一.初始化npm包 npm init 运行输入包 ...

  2. SpringCloud Alibaba (三):Sentinel 流量控制组件

    SpringCloud Alibaba (三):Sentinel 流量控制组件 Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式服务架构 ...

  3. IE对于input checkbox onclick方法显示不支持此对象和方法的解决方案

    网站注册页,协议结束后,通过input checkbox勾选,进行下一步,FF没问题,IE一直显示不支持此对象和方法. 网上查找大部分说函数名称与系统函数重名,而事实上不是. <div name ...

  4. 流媒体学习计划表——pr

    参考教程 视频:b站oeasy 书籍:<adobe premiere pro cc 2018经典教程> 学习教训 一定要多做--实践是检验真理的唯一标准 书籍补充理论知识,视频讲究实操(理 ...

  5. 505. The Maze II

    原题链接:https://leetcode.com/articles/the-maze-ii/ 我的思路 在做完了第一道迷宫问题 http://www.cnblogs.com/optor/p/8533 ...

  6. 【解读】TCP粘包拆包

    一.TCP粘包.拆包图解 假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到字节数是不确定的,故可能存在以下四种情况: 1)服务端分两次读取到了两个独立的数据包,分别是D1和D2, ...

  7. 入门大数据---Redis集群分布式学习

    Redis是什么? 官方介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列( ...

  8. egret.sys.TextNode

    class Test extends egret.Shape{ protected textNode:egret.sys.TextNode; constructor(){ this.width = t ...

  9. express高效入门教程(5)

    5.ejs模版 5.1.什么是模版引擎? 为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在后端开发中,处理数据的代码和展示 ...

  10. gdi和gdi+比较

    http://www.360doc.com/content/10/1013/17/1066008_60709410.shtmlhttp://www.360doc.com/content/10/1013 ...