赣州市洪水风险预警系统二维版本
xiebin
2023-03-02 b39483c96ae572121d3c619c0b9d37634e682cc4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
//***********************************图层显示控制--树状复选框实现↓↓******************************
//定义树状变量
var setting = setting();
var zNodes = zNodes();
 
//定义setting方法
function setting() {
    var setting = {
        check: {
            enable: true,
            chkStyle: "checkbox"
        },
        callback: {
            beforeCheck: zbeforeCheck,
            onCheck: zonCheck,
            beforeDblClick: zBeforeDblClick,
            onDblClick: zOnDblClick
        }
    };
    return (setting);
}
 
//定义树状结构
function zNodes() {
    var zNodes = [{
        name: "边界与地名",
        open: true,
        nocheck: true,
        children: [{
            name: "江西省边界",
            id: "江西省界线@VectorData",
            value: "江西省边界",
            // checked: true
        }, {
            name: "行政区边界",
            id: "行政区边界@VectorData",
            value: "行政区边界",
            // checked: true
        }, {
            name: "县区边界",
            id: "县区边界@VectorData",
            value: "县区边界",
            // checked: true
        }]
    }, {
        name: "重要湿地",
        open: true,
        nocheck: true,
        children: [{
            name: "第一批省重要湿地",
            id: "江西省重要湿地面@重要湿地",
            value: "重要湿地面",
            // checked: true
        }, {
            name: "自然保护区界",
            id: "自然保护区界@湿地数据",
            value: "省级湿地公园点",
            // checked: true
        }]
    }, {
        name: "湿地公园",
        open: true,
        nocheck: true,
        children: [{
            name: "国家湿地公园",
            id: "国家湿地公园@湿地数据",
            value: "国家湿地公园面",
            // checked: true
        },
            {
                name: "省级湿地公园",
                id: "省级湿地公园@湿地数据",
                value: "省级湿地公园面",
                // checked: true
            },
            {
                name: "湿地公园点",
                id: "湿地公园点@湿地数据",
                value: "湿地公园点",
                // checked: true
            }]
    }];
    return (zNodes);
}
 
//设置初始选择状态
function set_InitialChecked() {
    //获取树对象
    var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    //获取所有节点并转换为简单数组
    //var nodes = treeObj.getNodes()
    var nodes = treeObj.transformToArray(treeObj.getNodes());
    //定义子节点数组
    var chdnodes = [];
    //判断并获取所有子节点
    for (var i = 0; i < nodes.length; i++) {
        if (!nodes[i].isParent) {
            chdnodes.push(nodes[i]);
        }
    }
    //从选中的场景中获取图层列表
 
    var sceneControl = window.parent.frames['myframe'].sceneControl;
 
    //var sceneControl = parent.sceneControl;
    var scene = window.parent.frames['myframe'].scene;
    var layer3DServicesList = sceneControl.get_layer3DServicesList();
    //该场景提供的图层服务信息的总数
    var count = layer3DServicesList.get_count();
    //根据图层可见性设定节点初始选中状态
    for (var j = 0; j < count; j++) {
        //获取指定图层
        var layer3DServiceInfo = layer3DServicesList.get_item(j);
        var layer3DName = layer3DServiceInfo.get_name();
        var layer3D = scene.get_layer3Ds().get_item(layer3DName);
        if (layer3DName != "江西地形@JX" && layer3D && layer3D.get_isVisible()) {
            for (var k = 0; k < chdnodes.length; k++) {
                //根据图层名称匹配对应节点
                var id = chdnodes[k].id;
                if (layer3DName.indexOf(id) > -1) {
                    chdnodes[k].checked = true;
                    treeObj.updateNode(chdnodes[k]);
                }
            }
        } else if (layer3DName != "江西地形@JX") {
            for (var l = 0; l < chdnodes.length; l++) {
                //根据图层名称匹配对应节点
                var id = chdnodes[l].id;
                if (layer3DName.indexOf(id) > -1) {
                    chdnodes[l].checked = false;
                    treeObj.updateNode(chdnodes[l]);
                }
            }
        } else {
            break;
        }
    }
}
 
//定义预选择事件
function zbeforeCheck(treeId, treeNode) {
    return true;
}
 
//定义勾选事件
function zonCheck(event, treeId, treeNode) {
    //获取树对象
    var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
    //获取所有选中与未选中节点
    var nodes = treeObj.getCheckedNodes(true);
    var Nnodes = treeObj.getCheckedNodes(false);
    //定义子节点数组
    var chdnodes = [];
    var chdNnodes = [];
    //判断并获取所有选中子节点
    for (var i = 0; i < nodes.length; i++) {
        if (!nodes[i].isParent) {
            chdnodes.push(nodes[i]);
        }
    }
    //判断并获取所有未选中子节点
    for (var j = 0; j < Nnodes.length; j++) {
        if (!Nnodes[j].isParent) {
            chdNnodes.push(Nnodes[j]);
        }
    }
    check(chdnodes, chdNnodes);
}
 
//图层显示控制--控制图层可见性
function check(chk, Nchk) {
    var vale = chk;
    var Nvale = Nchk;
    //从选中的场景中获取图层列表
    console.log(parent);
 
    var sceneControl = window.parent.frames['myframe'].sceneControl;
 
    //var sceneControl = parent.sceneControl;
    var scene = window.parent.frames['myframe'].scene;
    var layer3DServicesList = sceneControl.get_layer3DServicesList();
    //该场景提供的图层服务信息的总数
    var count = layer3DServicesList.get_count();
    //设置选中图层为可见
    for (var j = 0; j < vale.length; j++) {
        var val = vale[j].id;
        for (var i = 0; i < count; i++) {
            //获取指定图层名
            var layer3DServiceInfo = layer3DServicesList.get_item(i);
            var layer3DName = layer3DServiceInfo.get_name();
            //匹配图层名
            if (layer3DName.indexOf(val) > -1) {
                var layer3D = scene.get_layer3Ds().get_item(layer3DName);
                layer3D.set_isVisible(true);
                //false为此图层不可见,true为可见
            }
        }
    }
    //设置未选中图层为不可见
    for (var k = 0; k < Nvale.length; k++) {
        var Nval = Nvale[k].id;
        for (var l = 0; l < count; l++) {
            //获取指定图层名
            var layer3DServiceInfo = layer3DServicesList.get_item(l);
            var layer3DName = layer3DServiceInfo.get_name();
            //匹配图层名
            if (layer3DName.indexOf(Nval) > -1) {
                var layer3D = scene.get_layer3Ds().get_item(layer3DName);
                layer3D.set_isVisible(false);
                //false为此图层不可见,true为可见
            }
        }
    }
    scene.refresh();
}
 
//预双击事件
function zBeforeDblClick(treeId, treeNode) {
    return true;
};
 
//定义双击事件--定位至图层
function zOnDblClick(event, treeId, treeNode) {
    //节点状态更变为已选
    treeNode.checked = true;
    $.fn.zTree.getZTreeObj(treeId).updateNode(treeNode);
    //从选中的场景中获取图层列表
    var sceneControl = window.parent.frames['myframe'].sceneControl;
 
    //var sceneControl = parent.sceneControl;
    var scene = window.parent.frames['myframe'].scene;
    var layer3DServicesList = sceneControl.get_layer3DServicesList();
    //该场景提供的图层服务信息的总数
    var count = layer3DServicesList.get_count();
    //设置选中图层为可见
    for (var i = 0; i < count; i++) {
        //获取指定图层名
        var layer3DServiceInfo = layer3DServicesList.get_item(i);
        var layer3DName = layer3DServiceInfo.get_name();
        //判断当前图层是否为选中图层
        if (layer3DName.indexOf(treeNode.value) > -1) {
            var layer3D = scene.get_layer3Ds().get_item(layer3DName);
            //设置该图层可见
            layer3D.set_isVisible(true);
            //获取图层的地理范围,并飞行到该范围
            var geobound = layer3D.get_bounds();
            scene.get_flyingOperator().flyToBounds(geobound, 2500);
        }
    }
};
 
//***********************************图层显示控制--树状复选框实现↑↑***********************************