最近工作上需要用ArcGIS API for Javascript來開發一個瀏覽器上使用的地圖編輯工具,分享一下一些相關的開發經驗。
我開發的地圖編輯工具是根據ESRI提供的例子修改而來的,參考的例子是https://developers.arcgis.com/en/javascript/jssamples/ed_default_editingwidget.html
我們下面只說一些需要注意的問題:
1、代理的問題
Java Script API是基於REST訪問的,通過GET的方式請求資料,這種方式有一個缺點,那就是URL的大少不能超過2048字元。為了解決這個問題ArcGIS Server引入一個代理。關代理的官方說明請參考Java Script API的 Using the Proxy Page一節(https://developers.arcgis.com/en/javascript/jshelp/ags_proxy.html)。
2、屬性編輯的問題
當你去新增一個點或者一條線的時候,你肯定要去為這個點或者這條線輸入一些我們資料庫中定義好的屬性,官方提供的例子是英文的,後臺資料庫也是英文的,這個問題就不明顯,但是在我們這種中文環境下使用就會遇到我資料庫裡是英文的,客戶端顯示要是中文的這樣的問題,想了很多辦法效果都不理想,最後發現下面這段程式碼是可以的
var featureLayerInfos = dojo.map(results, function(result) {
return {
featureLayer: result.layer,
showAttachments: false,
isEditable: true,
fieldInfos: [
{fieldName: 'name', visible: true,isEditable:true, label:'點名:'},
{fieldName: 'type', visible: true,'isEditable':true, label:'型別:'},
{fieldName: 'direction', visible: true,isEditable:true,label:'方向:'},
{fieldName: 'floors', visible: true,isEditable:true, label:'經停樓層:'},
{fieldName: 'floor', visible: true,isEditable:true, label:'所在樓層:'}
]
};
});
其實就是通過一些屬性,把請求返回的圖層資訊根據需要格式化了一下,具體看幫助文件https://developers.arcgis.com/en/javascript/jsapi/editor-amd.html
3、編輯時的捕捉功能
我們在ArcGIS Desktop裡面編輯的時候,會有捕捉功能,可以讓我們準確的從某個點開始畫新的圖形,在ArcGIS API for Javascript裡面也提供這個功能,具體的程式碼如下:
map.enableSnapping({snapKey:dojo.keys.copyKey});
好了,不說廢話,這次就到這兒了,如果是用於瀏覽器上的資料編輯,ArcGIS API for Javascript確實比Openlayers強大一些,不過如果是手機端顯示就必須是Openlayers了,請看我之前的博文
關於GeoWebCache的部署說明
http://www.cnblogs.com/znlgis/p/3487663.html