轉自:http://www.cnblogs.com/znlgis/p/3505646.htmljavascript
最近工做上須要用ArcGIS API for Javascript來開發一個瀏覽器上使用的地圖編輯工具,分享一下一些相關的開發經驗。html
我開發的地圖編輯工具是根據ESRI提供的例子修改而來的,參考的例子是https://developers.arcgis.com/en/javascript/jssamples/ed_default_editingwidget.htmljava
咱們下面只說一些須要注意的問題:數據庫
一、代理的問題api
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)。瀏覽器
二、屬性編輯的問題app
當你去添加一個點或者一條線的時候,你確定要去爲這個點或者這條線輸入一些咱們數據庫中定義好的屬性,官方提供的例子是英文的,後臺數據庫也是英文的,這個問題就不明顯,可是在咱們這種中文環境下使用就會遇到我數據庫裏是英文的,客戶端顯示要是中文的這樣的問題,想了不少辦法效果都不理想,最後發現下面這段代碼是能夠的工具
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代理
三、編輯時的捕捉功能htm
咱們在ArcGIS Desktop裏面編輯的時候,會有捕捉功能,能夠讓咱們準確的從某個點開始畫新的圖形,在ArcGIS API for Javascript裏面也提供這個功能,具體的代碼以下:
map.enableSnapping({snapKey:dojo.keys.copyKey});
好了,不說廢話,此次就到這兒了,若是是用於瀏覽器上的數據編輯,ArcGIS API for Javascript確實比Openlayers強大一些,不過若是是手機端顯示就必須是Openlayers了,請看我以前的博文
http://www.cnblogs.com/znlgis/p/3487663.html