编辑选择对象Editor

来源:互联网 发布:石家庄淘宝托管 编辑:程序博客网 时间:2024/05/04 06:12

在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"); //要想使删除操作具有逻辑连贯性,则在删除后又需要重新执行选择命令,因为这些命令都是一次性的,所以只能以这种方式实现
}

原创粉丝点击