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