WebGIS实现要素在线编辑之Silverlight调用FeatureService实现编辑功能MrRight

ArcGISAPIforSilverlight中提供的EditorWidget工具包含了要素属性的编辑,要素形状的编辑,要素选中要素,删除要素等。下面就来看一下具体过程。

新建一个项目:

项目浏览:

之后我们在ExpressionBlend中编辑界面。大致设计如下:

基本控件列表:

在建立好基本的界面之后,下面开始正式的工作:

1.我们需要添加一个供我们编辑的要素图层:FeatureLayer.在上一篇中已经讲了如何发布要素服务,这里我们引用上一篇发布的要素服务。示例代码如下:

OutFields:OutFields类型是一个字符串数组,表示该图层的要素暴露那些字段(属性),也就是说用户可见的属性有哪些。比如上一篇我们定义了一个点要素,并添加了一系列的属性,如排放量,负责人,运行状态,经纬度等,而我现在并不想将这些信息展示给客户端,不想这些信息都被用户看见,那么我们通过设置这里的OutFields暴露的字段来实现。

AutoSave:表示是否自动保存图层要素更改的信息。

Url:表示该要素图层的地址,比如上一篇我们介绍了如何发布FeatureService,这里你就可以将地址修改为你自己发布的FeatureService地址。

2.设置EditorWidget属性。

示例代码如下:

Map:表示EditorWidget编辑对应的地图是那个地图,绑定之后我们只能编辑指定地图中的要素图层。

AutoSelect:表示是否自动选择要素。

AlwaysDisplayDefaultTemplates:表示是否显示默认的模版。

ShowAttributesOnAdd:表示在添加要素时是否显示其属性。

GeometryServiceUrl:表示几何服务的地址,该几何服务将用于要素的编辑,例如移动要素,编辑多变的形状等。

LayerIDs:指定该编辑工具具体要编辑那几个要素图层,这些要素图层必须位置Map绑定的地图中,LayerIDs是一个字符串数组类型,不能在xaml中指定其属性值,只能在后台代码中指定。

FeatureDataForm重要属性的说明:

FeatureLayer:指定该FeatureDataForm是要显示那一个要素图层的信息(也就是被显示的要素位于那个FeatureLayer中)当被显示的要素来自于不同的要素图层时,不用在此绑定,可在后台代码中动态的指定。这里我们默认设置初始时不可见。

最后的XAML中的代码应该是这样的:

首先我们注册以下几个事件:

EditorWidget控件:Loaded事件(必选)

FeatureDataForm控件:EditEnded事件(可选,我们想在编辑完成时关闭FeatureDataForm)

FeatureLayer图层:MouseLeftButtonDown事件(可选,这里我们想实现点击某一要素时,显示其具体信息)

注意:这里不建议在XAML代码中注册事件,最好将注册事件和xaml代码分离。

我们在MainPage.xaml.cs的MainPage()构造函数中注册以上的事件:

1.在EditorWidget_Loaded方法中指定EditorWidget编辑的要素图层

privatevoidEditorWidget_Loaded(objectsender,RoutedEventArgse){string[]layerIDs={"SourceLayer"};MyEditorWidget.LayerIDs=layerIDs;}2.在FeatureLayer_MouseLeftButtonDown方法中添加相应的处理代码

这里需要实现的方法是:点击不同的要素(点要素),则显示其相应的属性信息。这里我们只需要将FeatureDataForm的GraphicSource属性绑定到我们点击的Graphic即可。示例代码如下:

privatevoidFeatureLayer_MouseLeftButtonDown(objectsender,ESRI.ArcGIS.Client.GraphicMouseButtonEventArgse){FeatureLayerfeatureLayer=senderasFeatureLayer;foreach(GraphicginfeatureLayer.Graphics)if(g.Selected)g.UnSelect();e.Graphic.Select();MyFeatureDataForm.GraphicSource=e.Graphic;MyFeatureDataForm.Visibility=Visibility.Visible;}在上一篇中我们建立的点要素包含了经纬度信息,这里我们想在添加点要素时根据其在地图上的位置来自动设置其经纬度属性。

privatestaticESRI.ArcGIS.Client.Projection.WebMercator_mercator=newESRI.ArcGIS.Client.Projection.WebMercator();WebMercator变量的作用可用于坐标系之间的相互转换,它具有两个方法:

FromGeographic:将几何要素的坐标系从4326坐标系转换到102100坐标系

ToGeographic:将几何要素的坐标系从102100坐标系转换到4326坐标系

此外每一个点要素实际上也是一个MapPoint,MapPoint具有X,Y属性,在102100坐标系中是以米为单位表示点的坐标。因此通过将点要素转化为MapPoint,然后通过ToGeographic方法转化成4326坐标系下的点,然后再获得其X,Y,即可得相应的经纬度。最后赋给点要素的经纬度属性。示例代码如下:

//将120010坐标系,转换为4326下的坐标系MapPointmapPoint=_mercator.ToGeographic(e.Graphic.Geometry)asMapPoint;//自动的添加经纬度e.Graphic.Attributes["Longitude"]=mapPoint.X;e.Graphic.Attributes["Latitude"]=mapPoint.Y;

3.在MyFeatureDataForm_EditEnded中添加退出编辑代码,即关闭FeatureDataForm,并清空其数据源。

privatevoidMyFeatureDataForm_EditEnded(objectsender,EventArgse){MyFeatureDataForm.GraphicSource=null;MyFeatureDataForm.Visibility=Visibility.Collapsed;}这样所有的工作便已经完成,此时后台的代码应该如下所示:

点击要素,会自动根据点要素在地图中的坐标为其经纬度属性赋值

注意下图:这里运行状态属性栏,我们发现是下拉框,只能选择运行状态和关闭状态。这就是我们在上一篇说的设置属性域起的作用。

最后编辑完成之后点击保存按钮。

验证是否保存成功,打开ArcCatalog,浏览到FeatureService使用的地理数据库,打开我们在FeatureService使用的要素属性表,就会发现所以的更改已保存到了数据库。

THE END
1.微信在线状态怎么设置手机软件php小编子墨为大家介绍微信在线状态设置方法。微信是目前最流行的社交软件之一,通过设置在线状态,我们可以控制自己在微信上的显示状态,保护隐私并更好地管理自己的社交生活。在本文中,我们将详细介绍如何设置微信在线状态,帮助大家更好地利用微信功能,享受更便捷的社交体验。 微信在线状态怎么设置 1、首先打开微信软件进入https://m.php.cn/faq/667158.html
2.微信在线怎么设置微信在线怎么设置 1、打开微信,在发现页,找到小程序入口 2、搜索:头像小助手 这个小程序,注意看图,不要点错啦 3、在「头像小助手」里找到「微状态」 4、进入后, 默认是自己的微信头像,想使用其他图片的话,点「选择图片」从手机相册上传想制作的图片。http://m.tianqiwen.com/shenghuo_424788/
3.怎么设置微信在线1、首先在我们的手机桌面上找到微信并点击它。 2、然后点击屏幕右下方的发现。 3、接着点击小程序。 4、然后输入头像状态插件并点击搜索。 5、接着点击头像状态插件小程序。 6、然后点击授权登录。 7、接着点击允许。 8、然后选择你要的在线状态。 9、接着点击保存。 10、这样我们微信的在线状态就设置成功了,https://edu.iask.sina.com.cn/jy/2p3V3I0RP2N.html
4.怎么自定义设置QQ的在线状态?很多用户使用QQ时,发现自己好友的在线状态有些特别,不知道是怎么设置的,本篇文章教大家如何自定义设置QQ的在线状态。一、设置 打开手机,点击QQ图标,运行它。如下图:运行QQ以后,点击主界面左上角的头像区域。如下图:点击头像区域后,会弹出一个菜单,在底部找到设置。如下图:二、在线状态 点击进入设置选项https://baijiahao.baidu.com/s?id=1754169096877727539&wfr=spider&for=pc
5.HUSTOJ轻量OJ使用手册和功能介绍常见问题108问3、如何开启论坛功能? 4、如何设置备案号? 5、如何添加选择填空题? 6、出现502 Bad Gateway,如何处理? 7、有没有Python题库? 8、如何指定输入输出文件? 9、如何快速构造测试数据? 10、如何开启在线测试运行 ? 11、如何手工添加题目? 12、如何增加更多的答题语言? https://blog.csdn.net/abilix_tony/article/details/131061395
6.cnki知网入口及操作指南(图文)您可在“在线阅读”的状态下,通过“选择图像”-->“文字识别”功能,将文字复制到文档中。 同一篇文章下载是否重复扣费? 重复下载同一篇文献,系统只收取一次下载费用。 我的帐号密码忘记了怎么找回? 1)用户自行查找:从首页的登录入口找到“忘记帐号/密码”按钮,可根据注册填写的手机号、邮箱或通过设置找回密码的问题https://www.dongrv.com/a/27063/
7.NTCE报名工作的通知2024年下半年中小学教师资格考试(面试)报名工作将于11月8日开始。此次面试在31个省(自治区、直辖市)举办,各省(自治区、直辖市)的报 关于2024年下半年中小学教师资格考试(笔试) 成绩发布的通知 关于开展2024年下半年中小学教师资格考试(笔试) https://ntce.neea.edu.cn/
8.qq在线文档怎么弄?如何开启QQ群在线文档功能?通过创建文件夹、设置标签等方式,让你的文档库更加有序、易于管理。 如何开启QQ群在线文档功能? 1、先打开QQ个人的主页中,点击设置进入; 2、在设置功能列表中,点击【辅助功能】选项; 3、最后,在辅助功能-群聊设置中,将【使用群文件在线预览服务】后的按钮开启即可开启QQ群在线文档功能。http://m.001ce.com/tech/tech/2024/0925/1000222118.html
9.如何在微信中使用文档多人在线编辑功能其实在微信中是有这个功能的,我们可以采用”腾讯文档”由多人同时进行在线编辑,各自维护各自的信息,系统会自动将所有维护的信息进行保存到同一份文件中。下面以实例进行具体操作讲解一下。 1. 在微信中搜索”腾讯文档”小程序,然后在结果中选取对应小程序。 https://www.qiduyu.com/xinwen/3555.html
10.淘宝千牛怎么设置客服离线公告?功能启用入口及嘲使用说明另外,人工接待服务时间不宜设置过短,否则可能造成消费者进线咨询时被离线公告劝退,影响询单及成交。 常见问题 Q:为什么设置启用了以后,满足条件时,在淘宝上看不到离线公告? A:该功能对手淘版本有要求,仅10.15.10及之后版本支持展示该功能。 Q:如果消费者打开聊天窗时,没有人工在线,但过程中有人上线了,会更新不https://www.mgzxzs.com/mp/3/11349.html
11.小程序网页端客服功能上新微信开放社区小程序网页端客服功能上新 小程序网页端客服上新客服状态设置、转接、主动结束会话、自动接入、自动回复、数据面板、拉起小程序能力,提升客服的沟通效率。 为更好地满足小程序客服人员使用网页端客服的需求,平台更新网页端客服状态设置、会话转接、主动结束会话、自动接入、自动回复、数据面板、拉起小程序能力,提升客服https://developers.weixin.qq.com/community/develop/article/doc/0002ae3c388b609c539c8362653c13
12.pdf容器编辑的功能有哪些?在线pdf编辑如何操作?在线pdf编辑如何操作? 首先打开福昕云编辑,点击打开按钮,在弹出的对话框中选一个需要编辑的PDF文档打开。编辑pdf文字,选择工具栏中的“编辑内容”,页面文本内容周围会出现方框,表示该区域文本是可以编辑的。点击进入对应的文本框中就可以对里面的文字进行编辑操作了。选择文本内容后,可以在属性窗格中设置文本的格式。 https://www.foxitsoftware.cn/edit/information/4181.html
13.QQ怎么设置在线对其隐身和上线提醒功能一、登陆QQ,然后选择你想要对其设置隐身的那位右键单击,选择“设置权限”,在选择“在线对其隐身”就可以啦! 二、怎么设置上线提醒功能 1、在qq登陆界面的下面,打开“系统设置”。 2、在系统设置中选择“提醒功能”,就会出现三个选择:关闭、全部、以下,如果选择是的以下也就是对不分好友的上线会提醒,你就可以进行https://www.qqtn.com/article/article_58550_1.html
14.拉丁语翻译网站有哪些?试试这2款拉丁语翻译工具1、打开翻译功能 我们可以通过浏览器打开智能翻译官在线网站,在顶部的导航栏上找到文本翻译功能组,点击「文本在线翻译」按钮,进入翻译界面。 2、设置翻译语言 将左侧输入框的源语设置为拉丁语(可以点击语言列表右侧的L,快速定位),将右侧结果框的目标语设置为简体中文。 https://www.fanyi1234.com/help/1723.html
15.怎么提取迅雷中的视频文件将迅雷设置为默认下载工具,点击下载以后会自动弹出“建立新的下载任务”。 十、迅雷如何在线预览? 一,迅雷在线预览方法如下,首先打开下载链接,让迅雷开始下载,如果下载速度超过200kb每秒,等十分钟后缓存的内容够多,就可以点击预览功能进行预览了。 二,如果迅雷下载没速度或者速度太低,预览会非常卡顿,不建议使用。如网https://tool.a5.cn/article/show/108810.html
16.#实体店经营#小风车怎么开通,在抖音上预约的在哪里找到抖音在线预约客户在哪查看? 小风车留的信息去哪里查看?目前在线预约功能,有客户留信息好像是没有消息提示的,所以我们收不到消息(已经会在第二天收到消息提示),只能自己每天定时看看。这个确实是一个bug,估计后面会优化改正,让我们可以设置。# - 虾聊(实体店引流https://www.douyin.com/video/7217021267226987834
17.丁香医生隐私政策概要在您使用相应功能时会看到弹窗提醒,询问您是否授权。您可以到您的设备的【设置】中找到关于"丁香医生 App"的隐私设置情况逐项查看您上述权限的开启状态,并可以决定将这些权限随时地开启或关闭(我们会指引您在您的设备系统中完成设置)。关于丁香医生调用权限的具体情况,请见隐私政策全文中关于《权限调用清单》的内容。http://dxy.com/doctor-college/agreement/privacy.html
18.如何利用微信隐私设置显示好友在线状态的技巧更重要的是,微信提供了朋友圈、公众号以及小程序等多种功能,使得用户能够以不同的方式建立和维护社交关系。 二、好友在线状态的显示设置在微信中,用户可以通过设置来决定是否显示自己的在线状态。当你打开微信,进入“我”的页面,再点击“设置”,接着选择“隐私”选项,就可以找到“显示我的在线状态”这个功能。如果https://m.sohu.com/a/822918540_121798711/
19.怎么对ppt文件进行压缩?值得介绍的8种PPT文件压缩法选择功能: 在 Smallpdf 网站上,选择“压缩”或“减小文件大小”功能。 上传文件: 点击“选择文件”按钮或拖拽文件到上传区域。浏览你的计算机,选择要压缩的 PPT 文件,并点击“打开”或“上传”按钮。 3. 选择压缩设置 选择压缩选项: Smallpdf 通常会自动选择最佳压缩设置,你可以查看或选择不同的压缩级别,如“基本https://www.douban.com/note/865352691/