//当前页面业务 '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.noLayerManage) { return } var item = layer.options var node = { id: layer.id, pId: layer.pid, name: layer.name, uuid: layer.uuid, } 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' node.checked = layer.isAdded && layer.show if (item._parent) { node._parent = item._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 = 0; i < changedNodes.length; i++) { var treeNode = changedNodes[i] treeNode.checkedOld = treeNode.checked 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 } } //处理图层显示隐藏 if (treeNode._parent) { var parentLayer = layersObj[treeNode._parent] thisWidget.updateLayerShow(layer, treeNode.checked, parentLayer) } else { thisWidget.updateLayerShow(layer, treeNode.checked) } } }