ArcGISMobile+WM6环境下,FeatureLayer图层的图元添加和删除操作

来源:互联网 发布:天瑞edx1800b软件下载 编辑:程序博客网 时间:2024/05/21 11:19

      近日,在做一个Mobile项目过程中,由于用户要求有个点图层的数据要动态添加和删除,于是就开始进行一系列实验,最后形成如下的解决办法。

 

     要实现FeatureLayer图层对象的添加,要确保其AllowNew属性为true才行,这是一个GET访问器,可以获得图层是否允许保存编辑(添加)。如果你在调试程序的时候AllowNew是false,那么可能有以下两个原因:


     1、图层不是SDE图层。可以将shp文件导入到SDE数据库中完成创建即可。


     2、图层没有创建Global ID(这是ArcGIS Mobile9.3版本后的一个特殊地方)。给图层创建Global ID的方法很简单,在ArcCatalog中右击图层点击Add Globl IDs...即可)

 

现将实现后的部分代码粘贴如下:

 

//将点图元添加到指定图层中
FeatureLayer gjdLayer = mobileService1.Layers["aaa"] as FeatureLayer;

if (gjdLayer.AllowNew)
{
 

 FeatureDataTable featureDataTable = gjdLayer.GetDataTable();
 FeatureDataRow editedFeature = featureDataTable.NewRow();
 ESRI.ArcGIS.Mobile.Geometries.Point point = new ESRI.ArcGIS.Mobile.Geometries.Point(new Coordinate(195629705.794, 8108212.368));
 editedFeature[gjdLayer.GeometryColumnIndex] = point as Geometry;
 editedFeature["Name"] = "测试1";
 featureDataTable.Rows.Add(editedFeature);

 

 //保存
 int count = featureDataTable.SaveInFeatureLayer();
}

 

 

//删除操作
FeatureLayer gjdLayer = mobileService1.Layers["aaa"] as FeatureLayer;

 

QueryFilter queryFilter = new QueryFilter("Name like '%'", true);

 

FeatureDataTable featureDataTable = gjdLayer.GetDataTable(queryFilter, null);

 

foreach (FeatureDataRow row in featureDataTable.Rows)
row.Delete();

 

// Updates the feature layer data table
featureDataTable.SaveInFeatureLayer();

 

 

原创粉丝点击