您的位置:首页 > Web前端

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

2011-01-15 17:47 656 查看
近日,在做一个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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: