//***********************************图层显示控制--树状复选框实现↓↓****************************** //定义树状变量 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); } } }; //***********************************图层显示控制--树状复选框实现↑↑***********************************