编辑选择对象Editor

在ArcGIS api for Siverlight|WPF 中有个编辑工具EditorWidget,如下图所示:

它有选择、添加、编辑、删除选择等功能,事实上,这些是由两个对象一起组合起来的,对要素的编辑功能由EditGeometry提供,而Editor则负责了要素的选择、删除选择等功能,在“地图编辑”一文中已介绍了EditGeometry,这里只对Editor进行简单介绍。Editor的选择、删除选择等功能,是以ICommad命令加命令参数的形式提供的,它包含添加、选择、删除选中、切割、连接等命令,这里只简单介绍选择、删除选中要素功能,步骤如下:

1、构造Editor对象

  Editor edit=new Editor();

  edit.GeometryServiceUrl = "http://localhost/arcgis/rest/services/Geometry/GeometryServer";//设置几何服务位置

  List<String> lyrIds = new List<string>();
  lyrIds.Add("People"); //添加工作图层(FeatureLayer)名称
  lyrIds.Add("Matter");
  lyrIds.Add("Organization");
  lyrIds.Add("Place");
  edit.LayerIDs = lyrIds.AsEnumerable<string>();//设置Edit的工作图层几何
  edit.Map = map1;//绑定地图控件

  edit.EditCompleted += new EventHandler<Editor.EditEventArgs>(edit_EditCompleted);//注册命令完成事件

2、执行命令

   edit.Select.Execute("New");//新建选择,有Add, Remove, New, Keyboard (default)四个参数,还有Add、Cut、Union、DelecteSelected、EditVertices等命令,具体的参数可以到官网查看官网,有些不确定参数的,则用""字符串即可

       //选中的要素在FeatureLayer.SelectedGraphics中可以查看

3、命令完成事件 

private void edit_EditCompleted(Object sender, Editor.EditEventArgs e)
{

  //e.Action属性可以用来判断,触发事件的命令
  if (edit.DeleteSelected.CanExecute("") == false)
  { //判断是否可以执行删除命令,其他命令的CanExecute("")方法同样也可以用来判断该命令是否能被执行,避免出错
    MessageBox.Show("请选择后再删除");
  }
  else
  {
    try
    {
      edit.DeleteSelected.Execute("");//执行删除选中要素命令,参数直接是"",要想保存删除,则需要执行edit.Save命令
    }
    catch (Exception ex)
    {
      MessageBox.Show(ex.Message, "删除失败");
    }
       }

  edit.Select.Execute("New"); //要想使删除操作具有逻辑连贯性,则在删除后又需要重新执行选择命令,因为这些命令都是一次性的,所以只能以这种方式实现
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值