arcgis图层控制

  1 define(["dojo/_base/declare"], function(declare){
  2     var mapEvent = null;
  3     return declare(null,{
  4         "id": '',
  5         "layer": null,
  6         "treeList": [],
  7         "map":null,
  8         constructor: function(id,layer,map){
  9             this.id = id || this.id;
 10             this.layer = layer || this.layer;
 11             this.map = map || this.map;             
 12         },
 13         getLayerList: function(){
 14             //获取图层信息
 15             var visibleLayer = [];
 16             var node = {};
 17             var layerinfos = this.layer.layerInfos;
 18             var parentnodes = []; //保存所有父节点
 19             var root = {
 20                 "id": "root",
 21                 "text": "所有图层",
 22                 "children": []
 23             };//根节点            
 24 
 25             if(layerinfos != null && layerinfos.length > 0){
 26                 var len = layerinfos.length;
 27                 for(var i=0; i<len; i++){
 28                     //debugger;
 29                     var info = layerinfos[i];
 30                     if(info.defaultVisibility){ //获取未隐藏图层的ID
 31                         visibleLayer.push(info.id);
 32                     }
 33                     node = {
 34                         "id": info.id,
 35                         "text": info.name,
 36                         "pid": info.parentLayerId,
 37                         "checked": info.defaultVisibility ? true:false,
 38                         "children":[] 
 39                     };
 40                     if(info.parentLayerId == -1){                                                
 41                         root.children.push(node);
 42                         parentnodes.push(node); 
 43                     }else{                         
 44                         getChildrenNodes(parentnodes, node); 
 45                         parentnodes.push(node);                       
 46                     }                    
 47                 }
 48             }
 49             //console.log(parentnodes)
 50             this.treeList.push(root);
 51             this.layer.setVisibleLayers(visibleLayer);//初始化显示图层
 52         },
 53         setLayerVisibility: function(){
 54             //设置图层可见性
 55             var _this = this;
 56             $("#"+_this.id).tree({
 57                 data: _this.treeList,
 58                 checkbox: true,
 59                 onCheck: function(node, checked){//更新显示选择的图层
 60                     var checkedNodes = $("#"+_this.id).tree("getChecked");//获取所有被选中的节点
 61                     var visible = [];
 62                     $.each(checkedNodes, function(i, cn){
 63                         visible.push(cn.id);
 64                     })
 65                     if(visible.length === 0){
 66                         visible.push(-1);
 67                     }
 68                     //console.log($("#"+_this.id).tree("getSelected"));
 69                     _this.layer.setVisibleLayers(visible);                    
 70                 }
 71             });
 72             if(mapEvent){
 73                 mapEvent.remove();
 74             }
 75             var lastNode = null;
 76             mapEvent = _this.map.on('update-end', function(){
 77                 var level = _this.map.getLevel();
 78                 var nodeId = 80;
 79                 switch(level){
 80                     case 14: nodeId = 80; break;
 81                     case 15: nodeId = 72; break;
 82                     case 16: nodeId = 59; break;
 83                     case 17: nodeId = 42; break;
 84                     case 18: nodeId = 21; break;
 85                     case 19: nodeId = 0; break;
 86                     default: nodeId = 80; break;
 87                 }
 88                 try{
 89                     if(lastNode){
 90                         $("#"+_this.id).tree("collapse",lastNode.target);
 91                     }
 92                     var node1 = $("#"+_this.id).tree('find', nodeId);                    
 93                     $("#"+_this.id).tree('select', node1.target);
 94                     $("#"+_this.id).tree("expand",node1.target);
 95                     lastNode = node1;
 96                 }catch(e){
 97 
 98                 }                
 99             });  
100         },      
101         removeCls: function(){
102             $("#"+this.id+" span").removeClass('tree-folder tree-file');            
103         }
104     });
105     function getChildrenNodes(pnodes, node){
106         
107         for(var i=pnodes.length-1; i>=0; i--){
108             var pnode = pnodes[i];
109             //如果是父子关系,为父节点增加子节点,退出for循环
110             if(pnode.id == node.pid){
111                 pnode.state = "closed"; //关闭二级树
112                 pnode.children.push(node);
113                 return;
114             }else{
115                 //如果不是父子关系,删除父节点栈里的当前节点
116                 pnodes.pop();
117             }
118         }
119     }
120 })

 

转载于:https://www.cnblogs.com/lfan/p/5958297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值