arcgis api for js入門開發系列十九圖層線上編輯
本篇主要講述的是利用arcgis api實現圖層線上編輯功能模組,效果圖如下:
實現思路:
1.arcgis server釋出的FeatureServer服務提供的圖層線上編輯能力:
2.實現的線上編輯(增刪改),主要是通過前端ajax請求後臺FeatureServer服務來實現的
(1)http://120.199.78.138:6080/arcgis/rest/services/dlsde/FeatureServer/0/updateFeatures
public void ProcessRequest (HttpContext context) {
string featureserverurl = context.Request.Params["featureserverurl"];
string features = context.Request.Params["features"];
string param = "features=" + features + "&f=json";
string url = featureserverurl + "/updateFeatures";
string ret = PostDataToUrl(param, url, "application/x-www-form-urlencoded");
context.Response.Write(ret);
}
(2)http://120.199.78.138:6080/arcgis/rest/services/dlsde/FeatureServer/0/addFeatures
public void ProcessRequest (HttpContext context) {
string featureserverurl = context.Request.Params["featureserverurl"];
string features = context.Request.Params["features"];
string param = "features=" + features + "&f=json";
string url = featureserverurl + "/addFeatures";
string ret = PostDataToUrl(param, url, "application/x-www-form-urlencoded");
context.Response.Write(ret);
}
(3)http://120.199.78.138:6080/arcgis/rest/services/dlsde/FeatureServer/0/deleteFeatures
public void ProcessRequest (HttpContext context) {
string featureserverurl = context.Request.Params["featureserverurl"];
string id = context.Request.Params["OBJECTID"];
string param = "where=OBJECTID=" + id + "&f=json";
string url = featureserverurl + "/deleteFeatures";
string ret = PostDataToUrl(param, url, "application/x-www-form-urlencoded");
context.Response.Write(ret);
context.Response.End();
}
3.前端ajax請求
(1)新增一條記錄:
var features = [];
var rec = {};
rec.attributes = {};
rec.geometry = DCI.editLayers.geometry;
rec.attributes["NAME"] = $("#update_name").val();
rec.attributes["KIND"] = $("#update_kind").val();
features.push(rec);
var feats = JSON.stringify(features);
/*[{ "attributes": { "NAME": "112", "KIND": "4080" }, "geometry": { "type": "point", "x": 121.29894825018249, "y": 39.72910692098025, "spatialReference": { "wkid": 4326 } } }]*/
var params = { features: feats, f: "pjson", featureserverurl: MapConfig.sdeURL };
$.ajax({
type: "post",
//dataType: "json",
url: getRootPath() + "handler/AddFeatureHandler.ashx",
data: params,
//async: false,//同步
success: function (response, textStatus) {
var ret = JSON.parse(response);
if (ret.addResults && ret.addResults[0].success) {
promptdialog("提示", "新增成功!");
DCI.editLayers.InitSde("");
DCI.editLayers.map.infoWindow.hide();
} else {
promptdialog("提示", "新增失敗!");
}
},
error: function (e) {
var error = e;
promptdialog("提示", "響應超時!");
}
});
(2)修改一條記錄:
var features = [];
var rec = {};
rec.attributes = {};
rec.attributes["OBJECTID"] = parseInt(objectid);
rec.attributes["NAME"] = $("#update_name").val();
rec.attributes["KIND"] = $("#update_kind").val();
features.push(rec);
var feats = JSON.stringify(features);
/*[{ "attributes": { "NAME": "112", "KIND": "4080" }, "geometry": { "type": "point", "x": 121.29894825018249, "y": 39.72910692098025, "spatialReference": { "wkid": 4326 } } }]*/
var params = { features: feats, f: "pjson", featureserverurl: MapConfig.sdeURL };
$.ajax({
type: "post",
//dataType: "json",
url: getRootPath() + "handler/UpdateFeatureHandler.ashx",
data: params,
//async: false,//同步
success: function (response, textStatus) {
var ret = JSON.parse(response);
if (ret.updateResults[0].success) {
promptdialog("提示", "更新成功!");
DCI.editLayers.InitSde("");
DCI.editLayers.map.infoWindow.hide();
} else {
promptdialog("提示", "更新失敗!");
}
},
error: function (e) {
var error = e;
promptdialog("提示", "響應超時!");
}
});
(3)刪除一條記錄:
var objectid = parseInt(id);
var params = { OBJECTID: objectid, featureserverurl: MapConfig.sdeURL };
$.ajax({
type: "post",
//dataType: "json",
url: getRootPath() + "handler/DeleteFeatureHandler.ashx",
data: params,
//async: false,//同步
success: function (response, textStatus) {
var ret = JSON.parse(response);
if (ret.success) {
promptdialog("提示", "刪除成功!");
DCI.editLayers.InitSde("");
DCI.editLayers.map.infoWindow.hide();
} else {
promptdialog("提示", "刪除失敗!");
}
},
error: function (e) {
var error = e;
promptdialog("提示", "響應超時!");
}
});
GIS之家新部落格系列釋出更新在GIS之家網站,歡迎關注收藏:GIS之家網站
GIS之家作品:GIS之家
GIS之家交流諮詢:諮詢模式
相關文章
- ArcGis api配合vue開發入門系列(一)引入arcgis api以及載入地圖APIVue地圖
- ArcGis api配合vue開發入門系列(二)距離以及面積的測量APIVue
- 線上編輯Word——插入圖片、圖形
- 通俗易懂的ArcGis開發快速入門
- ArcGIS API for JavaScript根據兩個點座標在地圖上畫線APIJavaScript地圖
- 谷歌開發者工具線上編輯HTML程式碼谷歌HTML
- openlayers入門開發系列之地圖工具欄篇地圖
- 【ArcGIS For JS】前端geojson渲染行政區劃圖層並加標籤前端JSON
- WordPress開發入門03:編輯PHP檔案的2個方式PHP
- Dubbo 入門系列之基於 Dubbo API 開發微服務應用API微服務
- Vue 高德地圖 API Loca 如何使用 連線線圖層、脈衝連線圖層Vue地圖API
- 開源線上視覺化流程編輯器視覺化
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- 本地圖文直接複製到線上編輯器中地圖
- 數維圖API文件 SovitJS編輯器整合API方法APIJS
- 微信小程式圖文編輯元件開發(偽富文字編輯)微信小程式元件
- 資料視覺化編輯平臺上線,小程式也能擁有視覺化圖層視覺化
- 預設後臺Kindeditor編輯器在ie11下,彈出層js有問題,點上傳圖片後,圖片上傳彈出層不出現IE11JS
- 線上富文字編輯器初探
- gitbook 入門教程之使用 gitbook-editor 編輯器開發電子書Git
- 雲端計算開發入門課程:Linux重器 vi編輯器Linux
- arcgis怎樣把面圖層按另一面圖層分割
- ArcGis API JS 4.X本地化部署與地圖的基礎使用APIJS地圖
- 自定義室內地圖-商場室內地圖線上編輯工具地圖
- 【D3.js 入門系列一】從零開始繪製一個柱形圖JS
- arcgis api for js回撥函式如何等待同步APIJS函式
- iMovie 入門教程:影片編輯的利器
- VSCode編輯器極簡使用入門VSCode
- Markdown線上、離線編輯器與使用教程
- vue3 快速入門系列 —— 其他APIVueAPI
- 線上程式碼編輯器選型
- 超圖js版 iclient 基本開發 - 載入基本圖層(以天地圖示例)和基本地圖控制元件JSclient地圖控制元件
- 線上PS入門教程:如何對人像快速摳圖
- (三)arcpy開發&利用arcpy實現接邊處理(arcgis要素建立、更新、圖層選擇)
- Web前端開發零基礎入門學習路線圖Web前端
- Flutter 入門路線圖Flutter
- odoo 開發入門教程系列-QWeb簡史OdooWeb
- odoo 開發入門教程系列-約束(Constraints)OdooAI