码迷,mamicode.com
首页 > 其他好文 > 详细

arcgis图层控制

时间:2016-10-13 23:26:03      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

  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 })

 

arcgis图层控制

标签:

原文地址:http://www.cnblogs.com/lfan/p/5958297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!