Fei_Xian_Lin_Ye_Fang_Huo/public/widgets/mapCompare/view.js

139 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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