屬性編輯
別嫌我懶,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介面,儲存編輯到伺服器只需要簡單的調用這個方法就可以了。