WebGIS 7 创建.删除.更新点要素的属性

1. 加载地图

1) 加载底图
        var map, layer;
        function init() {
//            添加地图容器
            map = new OpenLayers.Map("map1", {
                controls: [
                    new OpenLayers.Control.MousePosition(),//此控件显示鼠标移动时,所在点的地理坐标
                    new OpenLayers.Control.LayerSwitcher(),//图层切换控件
                    new OpenLayers.Control.Navigation()//此控件处理伴随鼠标事件的地图浏览
                ]
            });
//              添加矢量图层
            layer = new Zondy.Map.Layer("MDZZ",
//                    传入矢量地图的url参数
                    ["gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市"],
                    {
                        ip: "127.0.0.1",//ip
                        port: "6163",//端口
                        isBaseLayer: true //设为基础图层 !此项不写地图无法加载
                    });
//            将图层添加到地图容器中
            map.addLayer(layer);
            <!--设置地图显示中心坐标,地图缩放等级-->
            map.setCenter(new OpenLayers.LonLat(0, 0), 1);
        }

2.添加 删除 更新 点

一.点添加:

1.构建一个要素

几何信息
                var fGeom = new Zondy.Object.FeatureGeometry({PntGeom: [gPoint]});
图形信息
                var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
                                InfoType: 1, //图形参数为点类型 1为点,2为线,3为区
                                PntInfo: pointInfo //传入点的符号参数信息(Zondy.Object.CPointInfo)
                            });
属性信息
                var attValue = ['湖蓝', 'CHINA', 1.0];
创建点要素
                var feature = new Zondy.Object.Feature({
                                fGeom: fGeom,               //传入几何信息
                                GraphicInfo: webGraphicInfo,//传入图形信息
                                AttValue: attValue          //传入属性信息
                            });

2.设置要素为点要素

                feature.setFType(1);//设置要素为点要素  1为点,2为线,3为区              

3.

创建一个要素数据集
            var featureSet = new Zondy.Object.FeatureSet();                          
设置属性结构(可在前面定义)
             var attStruct = new Zondy.Object.CAttStruct({
                             FldName: ["Cname", "CNTRY_NAME", "POPULATION"],//属性名
                             FldNumber: 3,                                  //属性数量
                             FldType: ["string", "string", "double"]        // 属性类型数组
                          });                                      
将设置的属性结构赋给要素数据集
            featureSet.AttStruct = attStruct;                              
添加要素到数据集中
            featureSet.addFeature(feature);                                       

4.

创建一个编辑服务对象
            var editService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市",
                    {
                        ip: "127.0.0.1", //服务器ip
                        port: "6163"       //端口
                    });                              
将要素集添加到图层中并执行回调函数
             editService.add(featureSet, onSuccess);                   

5.回调函数提示用户是否添加成功

         function onSuccess(result) {
 //            如果添加成功则返回结果
             if(result){
                 alert("添加成功");//弹窗提示
 //                刷新地图
                 map.baseLayer.redraw(true);
             }else{
                 alert("添加失败");//弹窗提示
             }
         }                             

二.点删除

根据IOD删除,直接创建编辑服务类.调用deletes(OID,onSuccess)方法删除

       function delPoint() {

//            添加要删除的点的OID 数组形式删除一组点
//            var featureIds=[599,600,601];

//            添加要删除的点的OID 字符串形式删除一组点
//            var featureIds="599,600,601";

//            添加要删除的点的OID
            var featureIds = 602;
//            创建一个编辑服务类
            var delService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市", {
                ip: "127.0.0.1",//服务器ip
                port: "6163"    //端口
            });
//          将要素集从图层中删除并执行回调函数
            delService.deletes(featureIds, onSuccess);
        }

三.点更新

构建要素的过程与点添加相同, 两行代码不同.
需要设置被更新点的OID

//          设置要素为点要素  1为点,2为线,3为区
            newFeature.setFType(1);

             <!--此处与添加点区别-->
//           设置需要更新点的OID
            newFeature.setFID(602);


//           创建一个要素集
            var featureSet = new Zondy.Object.FeatureSet();

在创建编辑服务类后执行update(要素数据集,回调函数)

//            创建编辑服务类
            var editService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市",
                    {
                        ip: "127.0.0.1",//服务器ip
                        port: "6163"     //端口
                    });

//          更新要素集信息中并执行回调函数
            editService.update(featureSet,onSuccess);
        }

3.代码

1.添加点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加点要素</title>
    <link href="../css/mapDefault.css" type="text/css" rel="stylesheet">
    <script src="../libs/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script src="../libs/OpenLayers.js" type="text/javascript"></script>
    <script src="../libs/zdclient.js" type="text/javascript"></script>
    <script type="text/javascript">
        var map, layer;
        function init() {
//            添加地图容器
            map = new OpenLayers.Map("map1", {
                controls: [
                    new OpenLayers.Control.MousePosition(),//此控件显示鼠标移动时,所在点的地理坐标
                    new OpenLayers.Control.LayerSwitcher(),//图层切换控件
                    new OpenLayers.Control.Navigation()//此控件处理伴随鼠标事件的地图浏览
                ]
            });
//              添加矢量图层
            layer = new Zondy.Map.Layer("MDZZ",
//                    传入矢量地图的url参数
                    ["gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市"],
                    {
                        ip: "127.0.0.1",//ip
                        port: "6163",//端口
                        isBaseLayer: true //设为基础图层 !此项不写地图无法加载
                    });
//            将图层添加到地图容器中
            map.addLayer(layer);
            <!--设置地图显示中心坐标,地图缩放等级-->
            map.setCenter(new OpenLayers.LonLat(0, 0), 1);
        }

        function addPoint() {
//          创建一个点形状
            var gPoint = new Zondy.Object.GPoint(78, -35);
//          设置当前点要素的几何信息
            var fGeom = new Zondy.Object.FeatureGeometry({PntGeom: [gPoint]});
//           描述点要素的符号参数信息
            var pointInfo = new Zondy.Object.CPointInfo({
                Angle: 0, //旋转角度
                Color: 23,//颜色
                Space: 0,//间距
                SymHeight: 12,//点的高度
                SymWidth: 12,//点的宽度
                SymID: 7     //符号id
            });
//            设置当前点要素的图形参数
            var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
                InfoType: 1, //图形参数为点类型 1为点,2为线,3为区
                PntInfo: pointInfo //传入点的符号参数信息
            });
//          设置属性结构
            var attStruct = new Zondy.Object.CAttStruct({
                FldName: ["Cname", "CNTRY_NAME", "POPULATION"],//字段名称
                FldNumber: 3,                                  //属性数量
                FldType: ["string", "string", "double"]        // 属性类型数组
            });
//            设置添加点要素的属性
            var attValue = ['湖蓝', 'CHINA', 1.0];
//            创建点要素
            var feature = new Zondy.Object.Feature({
                fGeom: fGeom,               //传入几何信息
                GraphicInfo: webGraphicInfo,//传入图形信息
                AttValue: attValue          //传入属性信息
            });
            feature.setFType(1);//设置要素为点要素  1为点,2为线,3为区
//            创建一个要素数据集
            var featureSet = new Zondy.Object.FeatureSet();
//            清空要素集
            featureSet.clear();
//            给要素集添加数据结构
            featureSet.AttStruct = attStruct;
//            添加要素到数据集中
            featureSet.addFeature(feature);

//            创建一个编辑服务类
            var editService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市",
                    {
                        ip: "127.0.0.1", //服务器ip
                        port: "6163"       //端口
                    });
//          将要素集添加到图层中并执行回调函数
            editService.add(featureSet, onSuccess);
        }
        function onSuccess(result) {
//            如果添加成功则返回结果
            if(result){
                alert("添加成功");//弹窗提示
//                刷新地图
                map.baseLayer.redraw(true);
            }else{
                alert("添加失败");//弹窗提示
            }
        }


    </script>

</head>
<body onload="init()">
<div>
    <input type="button" class="ButtonLib" value="坐标添加点" onclick="addPoint()">
</div>


<div id="map1"></div>
<aside id="resultTable"></aside>
</body>
</html>

2.删除点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="../css/mapDefault.css" type="text/css" rel="stylesheet">
    <script src="../libs/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script src="../libs/OpenLayers.js" type="text/javascript"></script>
    <script src="../libs/zdclient.js" type="text/javascript"></script>
    <script type="text/javascript">
        var map, layer;
        function init() {
            //            添加地图容器
            map = new OpenLayers.Map("map1", {
                controls: [
                    new OpenLayers.Control.MousePosition(),//此控件显示鼠标移动时,所在点的地理坐标
                    new OpenLayers.Control.LayerSwitcher(),//图层切换控件
                    new OpenLayers.Control.Navigation()//此控件处理伴随鼠标事件的地图浏览
                ]
            });
 //              添加矢量图层
            layer = new Zondy.Map.Layer("MDZZ",
//                    传入矢量地图的url参数
                    ["gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市"],
                    {
                        ip: "127.0.0.1",//ip
                        port: "6163",//端口
                        isBaseLayer: true //设为基础图层 !此项不写地图无法加载
                    });
 //            将图层添加到地图容器中
            map.addLayer(layer);
            <!--设置地图显示中心坐标,地图缩放等级-->
            map.setCenter(new OpenLayers.LonLat(0, 0), 1);
        }

        function delPoint() {

//            添加要删除的点的OID 数组形式删除一组点
//            var featureIds=[599,600,601];

//            添加要删除的点的OID 字符串形式删除一组点
//            var featureIds="599,600,601";

//            添加要删除的点的OID
            var featureIds = 602;
//            创建一个编辑服务类
            var delService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市", {
                ip: "127.0.0.1",//服务器ip
                port: "6163"    //端口
            });
//          将要素集从图层中删除并执行回调函数
            delService.deletes(featureIds, onSuccess);
        }

        function onSuccess(result) {
//            如果删除成功则返回结果
            if (result) {
                map.baseLayer.redraw(true);
                alert("删除成功!");//弹窗提示
            } else {
                alert("删除失败");//弹窗提示
            }

        }


    </script>


</head>
<body onload="init()">
<div>
    <input type="button" class="ButtonLib" value="坐标删除点" onclick="delPoint()">
</div>


<div id="map1"></div>
<aside id="resultTable"></aside>
</body>
00
</html>

3.更新点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="../css/mapDefault.css" type="text/css" rel="stylesheet"/>
    <script src="../libs/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script src="../libs/OpenLayers.js" type="text/javascript"></script>
    <script src="../libs/zdclient.js" type="text/javascript"></script>
    <script type="text/javascript">
        var map, layer;
        function init() {
            //            添加地图容器
            map = new OpenLayers.Map("map1", {
                controls: [
                    new OpenLayers.Control.MousePosition(),//此控件显示鼠标移动时,所在点的地理坐标
                    new OpenLayers.Control.LayerSwitcher(),//图层切换控件
                    new OpenLayers.Control.Navigation()//此控件处理伴随鼠标事件的地图浏览
                ]
            });
//              添加矢量图层
            layer = new Zondy.Map.Layer("MDZZ",
//                    传入矢量地图的url参数
                    ["gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市"],
                    {
                        ip: "127.0.0.1",//ip
                        port: "6163",//端口
                        isBaseLayer: true //设为基础图层 !此项不写地图无法加载
                    });
//            将图层添加到地图容器中
            map.addLayer(layer);
            <!--设置地图显示中心坐标,地图缩放等级-->
            map.setCenter(new OpenLayers.LonLat(0, 0), 1);
        }


        function updatePoint() {
//          创建一个点形状
            var gPoint = new Zondy.Object.GPoint(78, -35);
//          设置点要素的几何信息
            var fGeom = new Zondy.Object.FeatureGeometry({PntGeom: [gPoint]});
//          设置点要素的符号参数信息
            var pointInfo = new Zondy.Object.CPointInfo({
                Angle: 0,//旋转角度
                Color: 18,//颜色
                Space: 0,//间距
                SymHeight: 25,//点的高度
                SymWidth: 25,//点的宽度
                SymID: 8     //符号id
            });

//            设置点要素的图形参数信息
            var webGraphicsInfo = new Zondy.Object.WebGraphicsInfo({
                InfoType: 1,//图形参数为线类型 1为点,2为线,3为区
                PntInfo: pointInfo //传入点的符号参数信息
            });

//            设置属性结构
            var attStruct = new Zondy.Object.CAttStruct({
                FldName: ["Cname", "CNTRY_NAME", "NAME", "POPULATION"], // 属性名
                FldNumber: 4,                                           //属性数量
                FldType: ["string", "string","NAME",  "double"]         // 属性类型数组
            });

//            设置添加要素的属性
            var attValue = ['兰州', 'CHINA111',"LanZhou" ,2.0];

//            创建一个新要素
            var newFeature = new Zondy.Object.Feature({
                fGeom: fGeom,                   //传入几何信息
                GraphicInfo: webGraphicsInfo,   //传入图形信息
                AttValue: attValue              //传入属性信息
            });
//          设置要素为点要素  1为点,2为线,3为区
            newFeature.setFType(1);

             <!--此处与添加点区别-->
//           设置需要更新点的OID
            newFeature.setFID(602);



//           创建一个要素集
            var featureSet = new Zondy.Object.FeatureSet();

//            清空要素集
            featureSet.clear();

//            给要素集添加数据结构
            featureSet.AttStruct = attStruct;

//            添加要素到数据集中
            featureSet.addFeature(newFeature);


//            创建编辑服务类
            var editService = new Zondy.Service.EditLayerFeature("gdbp://MapGisLocal/OpenLayerVecterMap/ds/世界地图经纬度/sfcls/主要城市",
                    {
                        ip: "127.0.0.1",//服务器ip
                        port: "6163"     //端口
                    });

//          更新要素集信息中并执行回调函数
            editService.update(featureSet,onSuccess);
        }

        function onSuccess(result) {
 //            如果更新成功则返回结果
            if (result) {
//                刷新地图
                map.baseLayer.redraw(true);
                alert("更新成功");//弹窗提示
            } else {
                alert("更新失败");//弹窗提示
            }

        }


    </script>
</head>


<body onload="init()">
<div>
    <input type="button" class="ButtonLib" value="更新点信息" onclick="updatePoint()">
</div>
<div id="map1"></div>
</body>
</html>

4.效果

添加点-before

Paste_Image.png

添加点-after

Paste_Image.png
Paste_Image.png

删除点

Paste_Image.png
Paste_Image.png

更新点before

Paste_Image.png

更新点after

Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 第八章 数据查询和选择 ||| 第十章 获取GIS数据列表和描述信息 我们将在本章中介绍以下几个案例: 游标对象(...
    muyan阅读 20,996评论 5 21
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,398评论 25 707
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,652评论 0 15
  • 或许 人只有在累的时候 才会忍不住打哈欠 连续两小时 跟着节拍 用身体来宣泄 情感类的动物 夜空下漫步 哈欠连天
    黄土高坡上的风姑娘阅读 89评论 2 1