iServer编辑功能增删改

借宝地记录笔记。通过数据服务提交增删改字符串请求体。注释未改完。
看之前应对post请求/响应有所了解。https://www.cnblogs.com/Im-Victor/p/9405974.html
或者对axios等有所了解。
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title data-i18n="resources.title_tiledMapLayer4326"></title>
    <script type="text/javascript" src="../js/include-web.js"></script>
    <!--
    帮助文档http://support.supermap.com.cn:8090/iserver/help/html/zh/index.htm
    json_parse.js 提供了 JSON 字符串的解析函数 json_parse,
    toJSON.js 提供了获取 XMLHttpRequest 对象的函数 getcommit、将 JavaScript 对象转化为 JSON 字符串的函数 toJSON
    -->
    <script type="text/javascript" src="../js/json_parse.js"></script>
    <script type="text/javascript" src="../js/toJSON.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
<div style="position:absolute;left:90px;top:30px;z-index:999">
    <input value='添加点' type="button" onclick=addpoint()>
    <input value='添加线' type="button" onclick=addline()>
    <input value='get线' type="button" onclick=getline()>
    <input value='批量更新线' type="button" onclick=updatelines()>
    <input value='更新单条线' type="button" onclick=updateline()>
    <input value='IDs批量删除线' type="button" onclick=deletelineids()>
    <input value='ID单个删除线' type="button" onclick=deletelineid()>
    <input value='SQL删除线' type="button" onclick=deletelinesql()>
    <input id="pos" value='24,102,名字属性' type="text">
    <input value='定位' type="button" onclick=flytomaker()>
</div><!--该工具条div不能包在mapdiv里面,否则工具条按钮点击事件会传给map导致popup关闭-->
<script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
<script type="text/javascript">
    var map, url = "http://182.247.253.93:8090/iserver/services/map-world/rest/maps/World";
    map = L.map('map', {
        crs: L.CRS.EPSG4326,
        center: [0, 0],
        maxZoom: 18,
        zoom: 1
    });
    L.supermap.tiledMapLayer(url).addTo(map);

    //往 Capitals 数据集中添加要素

    function addpoint() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer/rest/data/datasources/name/localhost:5432_AAA/datasets/name/dataset_capitals_p/features.rjson";

        //欲增加的要素信息。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        //如果增加的是多个点,则entity为[[NewFeature1],[NewFeature]],url还需要添加其他参数,参见features的POST请求
        var NewFeature = {
            // "ID": 5000,
            "fieldNames": [
                // "SMID",
                "SMX",
                "SMY",
                // "SMLIBTILEID",
                "SMUSERID",
                "CAPITAL",
                "COUNTRY",
                "CAP_POP"
            ],
            "fieldValues": [
                // "5000",
                "100.56",
                "100.55",
                // "5001",
                "5014",
                "示例首都",
                "示例国家",
                "582000.0"
            ],
            "geometry": {
                // "id": 5000,
                "parts": null,
                "points": [{
                    "x": 102.56,
                    "y": 24.55
                }],
                "style": null,
                "type": "POINT"
            }
        }

        //欲增加的要素信息集合(包含1个要素)
        var entity = [NewFeature];
        commit.open("POST", encodeURI(uri) + "?returnContent=true", false, "", "");
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(entity));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);

        //提示结果
        if (response.length > 0) {
            alert("创建要素成功,添加的要素资源的 ID 为:" + response[0])
        } else {
            alert("创建要素失败")
        }
    }
    function getline() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features.rjson";

        //欲增加的要素信息。线或面。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        var NewFeature = {
            // "ID": 5000,
            "fieldNames": [
                "SMUSERID"
            ],
            "fieldValues": [
                "5014"
            ],
            "geometry": {
                // "id": 5000,
                "parts": null,
                "points": [
                    {"x": 0, "y": 0},
                    {"x": 0, "y": 20},
                    {"x": 40, "y": 55},
                    {"x": 120, "y": 60}
                ],
                "style": null,
                "type": "LINE"
            }
        }

        //欲增加的要素信息集合(包含1个要素)
        // var entity = [NewFeature];
        commit.open("GET", encodeURI(uri) + "?returnContent=true", false, "", "");
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        // commit.send(toJSON(entity));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        // var response = json_parse(commit.responseText, null);
        console.log(commit.responseText);

        //提示结果
        // if (response.length > 0) {
        //     alert("创建要素成功,添加的要素资源的 ID 为:" + response[0])
        // } else {
        //     alert("创建要素失败")
        // }
    }
    function addline() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features.rjson";

        //欲增加的要素信息。线或面。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        var NewFeature = {
            // "ID": 5000,
            "fieldNames": [
                "SMUSERID"
            ],
            "fieldValues": [
                "5014"
            ],
            "geometry": {
                // "id": 5000,
                "parts": null,
                "points": [
                    {"x": 0, "y": 0},
                    {"x": 0, "y": 20},
                    {"x": 40, "y": 55},
                    {"x": 120, "y": 60}
                ],
                "style": null,
                "type": "LINE"
            }
        }

        //欲增加的要素信息集合(包含1个要素)
        var entity = [NewFeature];
        commit.open("POST", encodeURI(uri) + "?returnContent=true", false, "", "");
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(entity));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(response);

        //提示结果
        if (response.length > 0) {
            alert("创建要素成功,添加的要素资源的 ID 为:" + response[0])
        } else {
            alert("创建要素失败")
        }
    }

    //PUT更新多个要素
    function updatelines() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features.rjson";

        //欲增加的要素信息。线或面。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        //修改必须传入ID,可不传入fieldNames或geometry
        var NewFeature = {
            "ID":2,
            "fieldNames": [
                "SMUSERID"
            ],
            "fieldValues": [
                "999"
            ]
            // "geometry": {
            //     "id": 1,
            //     "parts": null,
            //     "points": [
            //         {"x": 0, "y": 0},
            //         {"x": 0, "y": 20},
            //         {"x": 40, "y": 55},
            //         {"x": 120, "y": 60}
            //     ],
            //     "style": null,
            //     "type": "LINE"
            // }
        }

        //欲增加的要素信息集合(包含1个要素)
        var entity = [NewFeature];//有多个要素需要更新的话都放到数组里
        commit.open("POST", encodeURI(uri) + "?returnContent=true"+"&_method=PUT", false, "", "");//请求参数填在这里
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(entity));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(response);

        //提示结果
        if (!response.succeed) {
            alert("更新失败")
        } else {
            alert("更新成功")
        }
    }

    //更新单个要素。单个要素更新的请求体是json对象字符串,不是数组对象字符串
    function updateline() {
        var commit = getcommit();
        //更新单条线地址有变
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features/";

        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        //修改必须传入ID,可不传入fieldNames或geometry
        var NewFeature = {
            "ID":"64",//必须传该参数,而且必须和地址里的参数保持一致。
            "fieldNames": [
                "SMUSERID"
            ],
            "fieldValues": [
                "666666"
            ],
        }
        // var entity = [NewFeature];
        commit.open("POST", encodeURI(uri) + "64.rjson?returnContent=true"+"&_method=PUT", false, "", "");//请求参数填在这里,包含ID号
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(NewFeature));
        console.log(toJSON(NewFeature))
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(response);

        //提示结果
        if (!response.succeed) {
            alert("更新失败")
        } else {
            alert("更新成功")
        }
    }

    //删除线要素,uri需要包含删除操作、删除的SQL条件或IDs数组。可批量删除。
    //IDS批量删除要素
    function deletelineids() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features.rjson";

        //欲增加的要素信息。线或面。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        // var NewFeature = {}

        //欲增加的要素信息集合(包含1个要素)
        var entity = [43];//IDS请求体数组填在这里
        commit.open("POST", encodeURI(uri) + "?_method=DELETE&deleteMode=IDS", false, "", "");
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(entity));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(commit.responseText);
        //提示结果
        if (!response.succeed) {
            alert("删除失败!或许不存在该要素!" )
        } else {
            alert("删除成功!")
        }
    }
    //根据ID删除单个要素
    function deletelineid() {
        var commit = getcommit();
        //地址结尾有变化
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features/";

        //欲增加的要素信息。线或面。
        //其中的 ID、SMID、geometry.id 一致,传入的值无效。SMLIBTILEID 的值是固定的,传入的值也无效。
        // var NewFeature = {}
        // var entity = [NewFeature];
        commit.open("POST", encodeURI(uri) + "64.rjson?_method=DELETE", false, "", "");//地址结构里需要带ID.rjson
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send();//必须send,内容可以为空
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(commit.responseText);
        //提示结果
        if (!response.succeed) {
            alert("删除失败!或许不存在该要素!" )
        } else {
            alert("删除成功!")
        }
    }

    //SQL条件批量删除要素
    function deletelinesql() {
        var commit = getcommit();
        var uri = "http://localhost:8090/iserver/services/data-editer-2/rest/data/datasources/name/localhost:5432_AAA/datasets/name/myline/features.rjson";
        //删除条件,请求体。官网帮助文档对SQL表述有错,按照如下方式写。
        var NewFeature = {"attributeFilter":"SmID < 100"}
        // var entity = [{"attributeFilter":"SmID < 47"}];
        commit.open("POST", encodeURI(uri) + "?_method=DELETE&deleteMode=SQL", false, "", "");
        commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        commit.send(toJSON(NewFeature));
        //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
        var response = json_parse(commit.responseText, null);
        console.log(commit.responseText);

        //提示结果
        if (!response.succeed) {
            alert("删除失败")
        } else {
            alert("删除成功")
        }
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q行天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值