arcgis api for js入門開發系列十九圖層線上編輯

weixin_34037977發表於2018-03-18

本篇主要講述的是利用arcgis api實現圖層線上編輯功能模組,效果圖如下:

2293363-09686f1fa49a084b..png
image
2293363-969a6cfb403cd63d..png
image
2293363-ee6881a22daa2b47..png
image
2293363-b15374dea9812174..png
image

實現思路:

1.arcgis server釋出的FeatureServer服務提供的圖層線上編輯能力:

2293363-c7bc4bd6442e3af8..png
image

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之家交流諮詢:諮詢模式

相關文章