最近工作上需要用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