属性编辑
别嫌我懒,ArcGIS Android API中正好还有一个进行编辑的例子,让我可以拿来主义一下。在这个AttributeEditor例子中,当你点击一个要素,程序就会弹出一个编辑要素属性的对话框供你对现有值进行修改:
图 33 编辑要素的属性
点击一个要素,从服务查询到该要素的属性信息在前面的内容中已经叙述过了,如何将查询到的属性显示在一个对话框中也是比较容易的(例子中将如何根据属性值来构建对话框这个过程进行了封装,这部分可以略过),我们需要关心的是一旦修改了某个属性值,然后点击对话框中的“Apply”按钮后,程序如何把更改保存到服务器。
剥开这个例子里层层叠叠的封装(我实在想说这个例子写的真差……)后,其实它想要告诉大家的是应该通过这样的方式来保存编辑到服务器:
Graphic newGraphic = new Graphic();
…//一系列赋值
newGraphic.setAttributeValue(featureLayer.getObjectIdField(),
listAdapter.featureSet.getGraphics()[0]
.getAttributeValue(featureLayer.getObjectIdField()));
featureLayer.applyEdits(null, null, new Graphic[] { newGraphic },
createEditCallbackListener(updateMapLayer));
没错,这个地方看起来就和其他ArcGIS的Web API非常类似了,逻辑上就是新建一个Graphic对象,并将修改过的属性值赋予这个Graphic(别忘了ObjectID,这是标识编辑哪个要素的必需属性),然后调用ArcGISFeatureLayer的applyEdits方法进行提交。没错,Feature Layer已经封装了Feature Server服务中的applyEdits接口,保存编辑到服务器只需要简单的调用这个方法就可以了。