Lin_Ye_Fang_Huo/public/widgets/mapCompare/view.js

139 lines
3.5 KiB
JavaScript
Raw Normal View History

2023-07-08 15:37:34 +08:00
//当前页面业务
2023-07-18 09:04:15 +08:00
"use script"; //开发环境建议开启严格模式
2023-07-08 15:37:34 +08:00
//对应widget.js中MyWidget实例化后的对象
2023-07-18 09:04:15 +08:00
var thisWidget;
var layersObj = {};
2023-07-08 15:37:34 +08:00
function initWidgetView(_thisWidget) {
2023-07-18 09:04:15 +08:00
thisWidget = _thisWidget;
2023-07-08 15:37:34 +08:00
//初始化树
var setting = {
check: {
enable: true,
},
data: {
simpleData: {
enable: true,
},
},
callback: {
onCheck: treeOverlays_onCheck,
onDblClick: treeOverlays_onDblClick,
},
view: {
// addDiyDom: addOpacityRangeDom
},
2023-07-18 09:04:15 +08:00
};
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
var zNodes = [];
var layers = thisWidget.getLayers();
2023-07-08 15:37:34 +08:00
for (var i = layers.length - 1; i >= 0; i--) {
2023-07-18 09:04:15 +08:00
var node = _getNodeConfig(layers[i]);
2023-07-08 15:37:34 +08:00
if (node) {
2023-07-18 09:04:15 +08:00
zNodes.push(node);
2023-07-08 15:37:34 +08:00
}
}
2023-07-18 09:04:15 +08:00
$.fn.zTree.init($("#treeOverlays_left"), setting, zNodes);
2023-07-08 15:37:34 +08:00
}
function _getNodeConfig(layer) {
2023-07-18 09:04:15 +08:00
if (layer == null || !layer.options || layer.options.noLayerManage) {
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var item = layer.options;
if (!item.name) {
console.log("未命名图层不加入图层管理", layer);
return;
}
2023-07-08 15:37:34 +08:00
var node = {
id: layer.id,
pId: layer.pid,
name: layer.name,
uuid: layer.uuid,
2023-07-18 09:04:15 +08:00
checked: layer.isAdded && layer.show,
};
2023-07-08 15:37:34 +08:00
if (layer.hasEmptyGroup) {
//空数组
2023-07-18 09:04:15 +08:00
node.icon = "../manageLayers/img/folder.png";
node.open = item.open == null ? true : item.open;
2023-07-08 15:37:34 +08:00
} else if (layer.hasChildLayer) {
//有子节点的数组
2023-07-18 09:04:15 +08:00
node.icon = "../manageLayers/img/layerGroup.png";
node.open = item.open == null ? true : item.open;
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
node.icon = "../manageLayers/img/layer.png";
if (layer.parent) {
node._parentId = layer.parent.uuid;
2023-07-08 15:37:34 +08:00
}
}
2023-07-18 09:04:15 +08:00
//记录图层
layersObj[node.uuid] = layer;
return node;
2023-07-08 15:37:34 +08:00
}
function treeOverlays_onDblClick(event, treeId, treeNode) {
if (treeNode == null || treeNode.uuid == null) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var layer = layersObj[treeNode.uuid];
2023-07-08 15:37:34 +08:00
if (layer == null) {
2023-07-18 09:04:15 +08:00
return;
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
layer.flyTo();
2023-07-08 15:37:34 +08:00
}
function treeOverlays_onCheck(e, treeId, chktreeNode) {
2023-07-18 09:04:15 +08:00
var treeObj = $.fn.zTree.getZTreeObj(treeId);
2023-07-08 15:37:34 +08:00
//获得所有改变check状态的节点
2023-07-18 09:04:15 +08:00
var changedNodes = treeObj.getChangeCheckedNodes();
for (var i = changedNodes.length - 1; i >= 0; i--) {
var treeNode = changedNodes[i];
treeNode.checkedOld = treeNode.checked;
if (treeNode.check_Child_State == 1) {
// 0:无子节点被勾选, 1:部分子节点被勾选, 2:全部子节点被勾选, -1:不存在子节点 或 子节点全部设置为 nocheck = true
continue;
}
var layer = layersObj[treeNode.uuid];
2023-07-08 15:37:34 +08:00
if (layer == null) {
2023-07-18 09:04:15 +08:00
continue;
2023-07-08 15:37:34 +08:00
}
//显示隐藏透明度设置view
// if (treeNode.checked)
// $("#" + treeNode.tId + "_range").show();
// else
// $("#" + treeNode.tId + "_range").hide();
//特殊处理同目录下的单选的互斥的节点可在config对应图层节点中配置"radio":true即可
if (layer.options.radio && treeNode.checked) {
var nodes = treeObj.getNodesByFilter(
function (node) {
2023-07-18 09:04:15 +08:00
var item = layersObj[node.uuid];
return item.options.radio && item.pid == layer.pid && node.uuid != treeNode.uuid;
2023-07-08 15:37:34 +08:00
},
false,
treeNode.getParentNode()
2023-07-18 09:04:15 +08:00
);
2023-07-08 15:37:34 +08:00
for (var nidx = 0; nidx < nodes.length; nidx++) {
2023-07-18 09:04:15 +08:00
nodes[nidx].checkedOld = false;
treeObj.checkNode(nodes[nidx], false, true);
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
$("#" + nodes[nidx].tId + "_range").hide();
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
var layertmp = layersObj[nodes[nidx].uuid];
layertmp.show = false;
2023-07-08 15:37:34 +08:00
}
}
//处理图层显示隐藏
2023-07-18 09:04:15 +08:00
thisWidget.updateLayerShow(layer, treeNode.checked);
2023-07-08 15:37:34 +08:00
}
}