From 7bd57c68259f3e47cf4b396fefb1abb3d12a71f5 Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期三, 15 九月 2021 09:29:47 +0800
Subject: [PATCH] add custom layer manager

---
 widgets/manageLayers_style/img/folder.png     |    0 
 widgets/manageLayers_style/img/layerGroup.png |    0 
 widgets/manageLayers_style/view.css           |   32 ++
 config/config.json                            |    4 
 widgetsTS/dataTime/view.html                  |   44 +-
 js/function.js                                |   36 -
 widgetsTS/dataTime/view.css                   |    4 
 widgetsTS/dataTime/widget.js                  |   25 +
 widgets/manageLayers_style/view.js            |  479 ++++++++++++++++++++++++++++++++++
 index.html                                    |    2 
 widgets/manageLayers_style/img/layer.png      |    0 
 widgets/manageLayers_style/view.html          |   55 +++
 widgets/manageLayers_style/widget.js          |  122 ++++++++
 config/widget.json                            |   24 +
 widgets/toolBarRight/view.css                 |    2 
 15 files changed, 770 insertions(+), 59 deletions(-)

diff --git a/config/config.json b/config/config.json
index bc67601..1b2d5b6 100644
--- a/config/config.json
+++ b/config/config.json
@@ -41,7 +41,7 @@
       "vrButton": false,
       "fullscreenButton": true,
       "navigationHelpButton": false,
-      "animation": true,
+      "animation": false,
       "timeline": false,
       "infoBox": false,
       "geocoder": false,
@@ -55,7 +55,7 @@
         "fps": false,
         "crs": "CGCS2000_GK_Zone_3",
         "crsDecimal": 0,
-        "template": "<div>缁忓害:{lng}</div> <div>绾害:{lat}</div> <div>妯獅crsx}  绾祘crsy}</div> <div>娴锋嫈锛歿alt}绫�</div> <div>灞傜骇锛歿level}</div><div>鏂瑰悜锛歿heading}掳</div> <div>淇话瑙掞細{pitch}掳</div><div>瑙嗛珮锛歿cameraHeight}绫�</div>"
+        "template": "<div>缁忓害:{lng}</div> <div>绾害:{lat}</div> <div>娴锋嫈锛歿alt}绫�</div> <div>灞傜骇锛歿level}</div><div>鏂瑰悜锛歿heading}掳</div> <div>淇话瑙掞細{pitch}掳</div><div>瑙嗛珮锛歿cameraHeight}绫�</div>"
       }
     },
     "terrain": {
diff --git a/config/widget.json b/config/widget.json
index eb1a14d..3929096 100644
--- a/config/widget.json
+++ b/config/widget.json
@@ -46,6 +46,12 @@
       "name": "鍑虹杞﹀浘灞�",
       "uri": "widgetsTS/taxi_layer/widget.js"
     }
+    ,
+    {
+      "name": "鏃堕棿鏃ユ湡",
+      "uri": "widgetsTS/dataTime/widget.js",
+      "noTitle": true
+    }
   ],
   "widgets": [
     {
@@ -104,6 +110,24 @@
       "disableOther": false
     },
     {
+      "name": "鍥惧眰绠$悊New",
+      "uri": "widgets/manageLayers_style/widget.js",
+      "group": "forlayer",
+      "autoCenter": true,
+      "windowOptions": {
+        "position": {
+          "top": 80,
+          "bottom": 30,
+          "right": 50
+        }
+      },
+      "css": {
+        "max-width": "300px"
+      },
+      "autoDisable": false,
+      "disableOther": false
+    },
+    {
       "name": "鍓栭潰鍒嗘瀽鍥捐〃",
       "uri": "widgets/measureChars/widget.js",
       "windowOptions": {
diff --git a/index.html b/index.html
index 11fd23d..264d49b 100644
--- a/index.html
+++ b/index.html
@@ -27,7 +27,7 @@
       type="text/javascript"
       src="lib/include-lib.js?time=20210803"
       libpath="lib/"
-      include="jquery,jquery.range,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil,localforage,nprogress,toastr,admui,turf,mars3d,mars3d-widget,mars3d-wind"
+      include="jquery,jquery.range,jedate,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil,localforage,nprogress,toastr,admui,turf,mars3d,mars3d-widget,mars3d-wind"
     ></script>
     <link href="css/style.css?time=20210803" rel="stylesheet" />
   </head>
diff --git a/js/function.js b/js/function.js
index da47511..7654949 100644
--- a/js/function.js
+++ b/js/function.js
@@ -59,7 +59,9 @@
   layer_1001_guokong = new mars3d.layer.DivLayer({
     name: '鍥芥帶鐐�',
     pid: 99, //鍥惧眰绠$悊 涓娇鐢紝鐖惰妭鐐筰d
-    show: false
+    show: false,
+    selectedMapStyleOptions:'pm25',
+    hasMapStyleOptions:['pm25','pm10','no','no2','nox','co']
   });
   map.addLayer(layer_1001_guokong);
 
@@ -205,36 +207,22 @@
       "format": "image/png",
       "sld": "http://127.0.0.1:8080/geoserver/styles/vis_grid1000_5000_co.sld"
     },
-    center: { "lat": 31.162801, "lng": 121.543277, "alt": 50000, "heading": 359.2, "pitch": -39.5 },
-    getFeatureInfoParameters: {
-      feature_count: 10
-    },
-    //鍗曞嚮楂樹寒鍙婂叾鏍峰紡
-    highlight: {
-      type: "wallP",
-      diffHeight: 300,
-      material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
-        image: "img/textures/fence.png",
-        color: "#ffff00",
-        speed: 10, //閫熷害锛屽缓璁彇鍊艰寖鍥�1-100
-        axisY: true,
-      }),
-    },
-    popup: "all",
-    show: false,
-    flyTo: true,
-    minimumLevel: 6, // load level
-    maximumLevel: 16,
-    minimumTerrainLevel: 5, // show level
-    maximumTerrainLevel: 18,
   });
+  map.addLayer(layer_grid_5000);
+
+  layer_grid_5000.reloadLayers = function (){
+    layer_grid_5000.options.layers ="konglu_58:vis_grid1000_day";
+    layer_grid_5000.options.parameters.sld ="http://127.0.0.1:8080/geoserver/styles/"+layer_grid_5000.options.selectedMapStyleOptions+".sld";
+    layer_grid_5000.options.parameters.viewparams="id1:0;id2:10";
+    console.log(layer_grid_5000);
+    layer_grid_5000.reload();
+  }
 
   //鍗曞嚮浜嬩欢
   layer_grid_5000.on(mars3d.EventType.click, function (event) {
     console.log("鍗曞嚮浜嗙煝閲忔暟鎹紝鍏�" + event.features.length + "鏉�", event);
   });
 
-  map.addLayer(layer_grid_5000);
 
 }
 
diff --git a/widgets/manageLayers_style/img/folder.png b/widgets/manageLayers_style/img/folder.png
new file mode 100644
index 0000000..44f67fa
--- /dev/null
+++ b/widgets/manageLayers_style/img/folder.png
Binary files differ
diff --git a/widgets/manageLayers_style/img/layer.png b/widgets/manageLayers_style/img/layer.png
new file mode 100644
index 0000000..93c746f
--- /dev/null
+++ b/widgets/manageLayers_style/img/layer.png
Binary files differ
diff --git a/widgets/manageLayers_style/img/layerGroup.png b/widgets/manageLayers_style/img/layerGroup.png
new file mode 100644
index 0000000..6180e51
--- /dev/null
+++ b/widgets/manageLayers_style/img/layerGroup.png
Binary files differ
diff --git a/widgets/manageLayers_style/view.css b/widgets/manageLayers_style/view.css
new file mode 100644
index 0000000..2e9c637
--- /dev/null
+++ b/widgets/manageLayers_style/view.css
@@ -0,0 +1,32 @@
+锘�.layersctl_rMenu {
+  position: absolute;
+  z-index: 999999;
+  display: none;
+  box-shadow: 0 1px 7px rgba(0, 0, 0, 0.4);
+  -webkit-border-radius: 4px;
+  border-radius: 4px;
+  padding: 4px 0;
+  background-color: #fff;
+  cursor: default;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  user-select: none;
+}
+
+.layersctl_rMenu ul {
+  margin: 0px;
+  padding: 0px;
+}
+
+.layersctl_rMenu ul li {
+  display: block;
+  color: #222;
+  font-size: 12px;
+  line-height: 20px;
+  text-decoration: none;
+  padding: 0 12px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  cursor: default;
+  outline: none;
+}
diff --git a/widgets/manageLayers_style/view.html b/widgets/manageLayers_style/view.html
new file mode 100644
index 0000000..9753495
--- /dev/null
+++ b/widgets/manageLayers_style/view.html
@@ -0,0 +1,55 @@
+锘�<!DOCTYPE html>
+<html class="no-js css-menubar" lang="zh-cn">
+  <head>
+    <title>寮圭獥瀛愰〉闈�</title>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <!-- 绉诲姩璁惧 viewport -->
+    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,minimal-ui" />
+    <meta name="author" content="鐏槦绉戞妧 http://mars3d.cn " />
+    <!-- 360娴忚鍣ㄩ粯璁や娇鐢╓ebkit鍐呮牳 -->
+    <meta name="renderer" content="webkit" />
+    <!-- Chrome娴忚鍣ㄦ坊鍔犳闈㈠揩鎹锋柟寮忥紙瀹夊崜锛� -->
+    <link rel="icon" type="image/png" href="../../img/favicon/favicon.png" />
+    <meta name="mobile-web-app-capable" content="yes" />
+    <!-- Safari娴忚鍣ㄦ坊鍔犲埌涓诲睆骞曪紙IOS锛� -->
+    <link rel="icon" sizes="192x192" href="img/favicon/apple-touch-icon.png" />
+    <meta name="apple-mobile-web-app-capable" content="yes" />
+    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
+    <meta name="apple-mobile-web-app-title" content="鐏槦绉戞妧MarsGIS" />
+    <!-- Win8鏍囬鏍忓強ICON鍥炬爣 -->
+    <link rel="apple-touch-icon-precomposed" href="../../img/favicon/apple-touch-icon.png" />
+    <meta name="msapplication-TileImage" content="../../img/favicon/app-icon72x72@2x.png" />
+    <meta name="msapplication-TileColor" content="#62a8ea" />
+
+    <!-- 绗�3鏂筶ib寮曞叆 -->
+    <script
+      type="text/javascript"
+      src="../../lib/include-lib.js?time=20210803"
+      libpath="../../lib/"
+      include="jquery,ztree,font-awesome,bootstrap,jquery.range,admui-frame"
+    ></script>
+
+    <link href="../../css/widget-win.css" rel="stylesheet" />
+    <link href="view.css?time=20210803" rel="stylesheet" />
+  </head>
+
+  <body>
+    <div id="view" style="width: 100%; height: calc(100% - 40px); overflow: auto">
+      <ul id="treeOverlays" class="ztree"></ul>
+    </div>
+    <div style="position: absolute; bottom: 0; padding: 5px; color: #a59d9d">鎻愮ず锛氬弻鍑诲彲瀹氫綅瑙嗗煙鑷冲叾鎵�鍦ㄤ綅缃�</div>
+
+    <div id="content_layer_manager_rMenu" class="layersctl_rMenu">
+      <ul>
+        <li data-type="top">鍥惧眰缃负椤跺眰</li>
+        <li data-type="up">鍥惧眰涓婄Щ涓�灞�</li>
+        <li data-type="down">鍥惧眰涓嬬Щ涓�灞�</li>
+        <li data-type="bottom">鍥惧眰缃负搴曞眰</li>
+      </ul>
+    </div>
+
+    <!--椤甸潰js-->
+    <script src="view.js?time=20210803"></script>
+  </body>
+</html>
diff --git a/widgets/manageLayers_style/view.js b/widgets/manageLayers_style/view.js
new file mode 100644
index 0000000..4836f6c
--- /dev/null
+++ b/widgets/manageLayers_style/view.js
@@ -0,0 +1,479 @@
+锘�"use script"; //寮�鍙戠幆澧冨缓璁紑鍚弗鏍兼ā寮�
+
+//瀵瑰簲widget.js涓璏yWidget瀹炰緥鍖栧悗鐨勫璞�
+var thisWidget;
+var layers = [];
+var layersObj = {};
+
+//褰撳墠椤甸潰涓氬姟
+function initWidgetView(_thisWidget) {
+  thisWidget = _thisWidget;
+
+  //鍙抽敭
+  bindRightMenuEvnet();
+
+  //鍒濆鍖栨爲
+  var setting = {
+    check: {
+      enable: true,
+    },
+    data: {
+      simpleData: {
+        enable: true,
+      },
+    },
+    callback: {
+      onCheck: treeOverlays_onCheck,
+      onRightClick: treeOverlays_OnRightClick,
+      onDblClick: treeOverlays_onDblClick,
+      onClick: treeOverlays_onClick,
+    },
+
+    view: {
+      addDiyDom: addOpacityRangeDom,
+    },
+  };
+
+  var zNodes = [];
+  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"), 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 = "img/folder.png";
+    node.open = item.open == null ? true : item.open;
+  } else if (layer.hasChildLayer) {
+    //鏈夊瓙鑺傜偣鐨勬暟缁�
+    node.icon = "img/layerGroup.png";
+    node.open = item.open == null ? true : item.open;
+  } else {
+    node.icon = "img/layer.png";
+    if (layer.parent) {
+      node._parentId = layer.parent.uuid;
+    }
+  }
+  //璁板綍鍥惧眰
+  layersObj[node.uuid] = layer;
+  return node;
+}
+
+function addNode(item) {
+  var treeObj = $.fn.zTree.getZTreeObj("treeOverlays");
+
+  var parentNode;
+  if (item.pid && item.pid != -1) {
+    parentNode = treeObj.getNodeByParam("id", item.pid, null);
+  }
+
+  var node = _getNodeConfig(item);
+  if (!node) {
+    return;
+  }
+
+  treeObj.addNodes(parentNode, 0, [node], true);
+
+  //鏇存柊瀛愯妭鐐瑰浘灞�
+  if (item.hasChildLayer) {
+    item.eachLayer((childLayer) => {
+      removeNode(childLayer);
+      addNode(childLayer);
+    });
+  }
+}
+
+function removeNode(layer) {
+  var treeObj = $.fn.zTree.getZTreeObj("treeOverlays");
+
+  var node = treeObj.getNodeByParam("uuid", layer.uuid, null);
+  if (node) {
+    treeObj.removeNode(node);
+  }
+}
+
+function updateNode(layer) {
+  var treeObj = $.fn.zTree.getZTreeObj("treeOverlays");
+
+  var node = treeObj.getNodeByParam("uuid", layer.uuid, null);
+  var show = layer.isAdded && layer.show;
+  if (node) {
+    //鏇存柊node
+    if (node.checked == show) {
+      return;
+    }
+
+    node.checkedOld = node.checked;
+    node.checked = show;
+
+    treeObj.updateNode(node);
+  } else {
+    addNode(layer, show);
+  }
+}
+
+//===================================鍙屽嚮瀹氫綅鍥惧眰====================================
+function treeOverlays_onClick(e, treeId, treeNode, clickFlag) {
+  // if (treeNode == null || treeNode.uuid == null) {
+  //   return
+  // }
+  // var layer = layersObj[treeNode.uuid]
+  // if (layer) {
+  //   thisWidget.checkClickLayer(layer, treeNode.checked)
+  // }
+}
+
+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 removeArrayItem(arr, val) {
+  for (let i = 0; i < arr.length; i++) {
+    if (arr[i] == val) {
+      arr.splice(i, 1);
+      return true;
+    }
+  }
+  return false;
+}
+
+function treeOverlays_onCheck(e, treeId, chktreeNode) {
+  var treeObj = $.fn.zTree.getZTreeObj(treeId);
+  //鑾峰緱鎵�鏈夋敼鍙榗heck鐘舵�佺殑鑺傜偣
+  var changedNodes = treeObj.getChangeCheckedNodes();
+
+  removeArrayItem(changedNodes, chktreeNode);
+  changedNodes.push(chktreeNode);
+
+  for (var i = 0; i < changedNodes.length; 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;
+    }
+
+    //鏄剧ず闅愯棌閫忔槑搴﹁缃畍iew
+    if (treeNode.checked) {
+      $("#" + treeNode.tId + "_range").show();
+      $("#" + treeNode.tId + "_style").show();
+    } else {
+      $("#" + treeNode.tId + "_range").hide();
+      $("#" + treeNode.tId + "_style").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);
+  }
+
+  var layerThis = layersObj[chktreeNode.uuid];
+  if (layerThis) {
+    thisWidget.checkClickLayer(layerThis, chktreeNode.checked);
+  }
+}
+
+//===================================閫忔槑搴﹁缃�====================================
+
+//鍦ㄨ妭鐐瑰悗娣诲姞鑷畾涔夋帶浠�
+function addOpacityRangeDom(treeId, tNode) {
+  //if (tNode.icon == "images/folder.png") return;
+
+  var layer = layersObj[tNode.uuid];
+
+  // add map style selection radio
+
+  if (!layer.hasOpacity && !layer.options.hasMapStyleOptions) {
+    return;
+  }
+
+
+  if (layer.hasOpacity) {
+    var view = $("#" + tNode.tId);
+    var silder = '<input id="' + tNode.tId + '_range" type="range" style="width: 50px;" />';
+    view.append(silder);
+
+    if (!tNode.checked) {
+      $("#" + tNode.tId + "_range").hide();
+    }
+
+    $("#" + tNode.tId + "_range").range({
+      min: 0,
+      max: 100,
+      step: 1,
+      value: (layer.opacity || 1) * 100,
+      onChange: function (value) {
+        var opacity = value / 100;
+        var layer = layersObj[tNode.uuid];
+        //璁剧疆鍥惧眰鐨勯�忔槑搴�
+        // thisWidget.udpateLayerOpacity(layer, opacity)
+        layer.opacity = opacity;
+      },
+    });
+  }
+  if (layer.options.hasMapStyleOptions) {
+    var view = $("#" + tNode.tId);
+    var radio_html = '<div id="'+tNode.tId+'_style" style="color: white;">';
+
+    let item = layer.options.hasMapStyleOptions;
+
+    for (var i = 0, len = item.length; i < len; i++) {
+
+      radio_html += '<span class="button level1 switch center_docu" ></span><label><input type="radio" name="' + tNode.tId + '_style" value="" '+(item[i]==layer.options.selectedMapStyleOptions?"checked":"")+'/>'+item[i].toUpperCase()+'</label></br>';
+
+    }
+    radio_html +='</div>';
+
+    view.append(radio_html);
+
+    if (!tNode.checked) {
+      $("#" + tNode.tId + "_style").hide();
+    }
+
+    $('input[type=radio][name='+ tNode.tId + '_style]').change(function() {
+      var layer = layersObj[tNode.uuid];
+        layer.options.selectedMapStyleOptions = this.value;
+        mars3d.reloadLayers(layer.id);
+      
+      });
+  }
+
+
+}
+
+//===================================鍙抽敭鑿滃崟====================================
+var lastRightClickTreeId;
+var lastRightClickTreeNode;
+
+function treeOverlays_OnRightClick(event, treeId, treeNode) {
+  if (treeNode == null) {
+    return;
+  }
+
+  var layer = layersObj[treeNode.uuid];
+  if (!layer || !layer.hasZIndex) {
+    return;
+  }
+
+  //鍙冲嚮鏃剁殑鑺傜偣
+  lastRightClickTreeId = treeId;
+  lastRightClickTreeNode = treeNode;
+
+  var top = event.clientY;
+  var left = event.clientX;
+  var maxtop = document.body.offsetHeight - 100;
+  var maxleft = document.body.offsetWidth - 100;
+
+  if (top > maxtop) {
+    top = maxtop;
+  }
+  if (left > maxleft) {
+    left = maxleft;
+  }
+
+  $("#content_layer_manager_rMenu")
+    .css({
+      top: top + "px",
+      left: left + "px",
+    })
+    .show();
+  $("body").bind("mousedown", onBodyMouseDown);
+}
+
+function onBodyMouseDown(event) {
+  if (!(event.target.id == "content_layer_manager_rMenu" || $(event.target).parents("#content_layer_manager_rMenu").length > 0)) {
+    hideRMenu();
+  }
+}
+
+function hideRMenu() {
+  $("body").unbind("mousedown", onBodyMouseDown);
+  $("#content_layer_manager_rMenu").hide();
+}
+
+function bindRightMenuEvnet() {
+  $("#content_layer_manager_rMenu li").on("click", function () {
+    hideRMenu();
+
+    var type = $(this).attr("data-type");
+    moveNodeAndLayer(type);
+  });
+}
+
+//绉诲姩鑺傜偣鍙婂浘灞備綅缃�
+function moveNodeAndLayer(type) {
+  var treeObj = $.fn.zTree.getZTreeObj(lastRightClickTreeId);
+
+  //鑾峰緱褰撳墠鑺傜偣鐨勬墍鏈夊悓绾ц妭鐐�
+  var childNodes;
+  var parent = lastRightClickTreeNode.getParentNode();
+  if (parent == null) {
+    childNodes = treeObj.getNodes();
+  } else {
+    childNodes = parent.children;
+  }
+
+  var thisNode = lastRightClickTreeNode;
+  var thisLayer = layersObj[thisNode.uuid];
+
+  switch (type) {
+    default:
+      break;
+    case "up": //鍥惧眰涓婄Щ涓�灞�
+      {
+        let moveNode = thisNode.getPreNode();
+        if (moveNode) {
+          treeObj.moveNode(moveNode, thisNode, "prev");
+          let moveLayer = layersObj[moveNode.uuid];
+
+          exchangeLayer(thisLayer, moveLayer);
+        }
+      }
+      break;
+
+    case "top": //鍥惧眰缃簬椤跺眰
+      {
+        if (thisNode.getIndex() == 0) {
+          return;
+        }
+        while (thisNode.getIndex() > 0) {
+          //鍐掓场浜ゆ崲
+          let moveNode = thisNode.getPreNode();
+          if (moveNode) {
+            treeObj.moveNode(moveNode, thisNode, "prev");
+
+            let moveLayer = layersObj[moveNode.uuid];
+            exchangeLayer(thisLayer, moveLayer);
+          }
+        }
+      }
+      break;
+
+    case "down": //鍥惧眰涓嬬Щ涓�灞�
+      {
+        let moveNode = thisNode.getNextNode();
+        if (moveNode) {
+          treeObj.moveNode(moveNode, thisNode, "next");
+
+          let moveLayer = layersObj[moveNode.uuid];
+          exchangeLayer(thisLayer, moveLayer);
+        }
+      }
+      break;
+    case "bottom": //鍥惧眰缃簬搴曞眰
+      {
+        if (thisNode.getIndex() == childNodes.length - 1) {
+          return;
+        }
+
+        while (thisNode.getIndex() < childNodes.length - 1) {
+          //鍐掓场浜ゆ崲
+          let moveNode = thisNode.getNextNode();
+          if (moveNode) {
+            treeObj.moveNode(moveNode, thisNode, "next");
+
+            let moveLayer = layersObj[moveNode.uuid];
+            exchangeLayer(thisLayer, moveLayer);
+          }
+        }
+      }
+      break;
+  }
+
+  //鎸塷rder閲嶆柊鎺掑簭
+  layers.sort(function (a, b) {
+    return a.zIndex - b.zIndex;
+  });
+}
+
+/**
+ * 浜ゆ崲鐩搁偦鐨勫浘灞� 锛� layer1 寰呯Щ鍔ㄥ浘灞� 锛宭ayer2 绉诲姩鐩爣鍥惧眰
+ */
+function exchangeLayer(layer1, layer2) {
+  if (layer1 == null || layer2 == null) {
+    return;
+  }
+  var or = layer1.zIndex;
+  layer1.zIndex = layer2.zIndex; //鍚戜笂绉诲姩
+  layer2.zIndex = or; //鍚戜笅绉诲姩
+
+  console.log(`${layer1.name}:${layer1.zIndex},  ${layer2.name}:${layer2.zIndex}`);
+
+  // //鍚戜笂绉诲姩
+  // thisWidget.udpateLayerZIndex(layer1, layer1.zIndex)
+  // //鍚戜笅绉诲姩
+  // thisWidget.udpateLayerZIndex(layer2, layer2.zIndex)
+}
+
+//===================================鍏朵粬====================================
+
+//鍦板浘鍥惧眰娣诲姞绉婚櫎鐩戝惉锛岃嚜鍔ㄥ嬀閫�
+function updateCheckd(name, checked) {
+  var treeObj = $.fn.zTree.getZTreeObj("treeOverlays");
+  var nodes = treeObj.getNodesByParam("name", name, null);
+  if (nodes && nodes.length > 0) {
+    treeObj.checkNode(nodes[0], checked, false);
+  } else {
+    console.log("鏈湪鍥惧眰鏍戜笂鎵惧埌鍥惧眰鈥�" + name + "鈥濓紝鏃犳硶鑷姩鍕鹃�夊鐞�");
+  }
+}
diff --git a/widgets/manageLayers_style/widget.js b/widgets/manageLayers_style/widget.js
new file mode 100644
index 0000000..f393409
--- /dev/null
+++ b/widgets/manageLayers_style/widget.js
@@ -0,0 +1,122 @@
+"use script"; //寮�鍙戠幆澧冨缓璁紑鍚弗鏍兼ā寮�
+(function (window, mars3d) {
+  //鍒涘缓widget绫伙紝闇�瑕佺户鎵緽aseWidget
+  class MyWidget extends mars3d.widget.BaseWidget {
+    //寮圭獥閰嶇疆
+    get view() {
+      return {
+        type: "window",
+        url: "view.html",
+        windowOptions: {
+          // noTitle: true,
+          // closeBtn: 0,
+          width: 250,
+          height: 600,
+        },
+      };
+    }
+    //鏄惁鍙互鎺у埗basemaps锛屽洜涓烘湁搴曞浘鎺у埗浜嗭紝鍏蜂綋椤圭洰涓彲浠ユ寜闇�鏀逛负false
+    get hasManagerBaseMaps() {
+      return true;
+    }
+
+    //鍒濆鍖朳浠呮墽琛�1娆
+    create() {}
+    //姣忎釜绐楀彛鍒涘缓瀹屾垚鍚庤皟鐢�
+    winCreateOK(opt, result) {
+      this.viewWindow = result;
+    }
+    //鎵撳紑婵�娲�
+    activate() {
+      //鐩戝惉浜嬩欢锛岃仈鍔ㄥ嬀閫夌姸鎬�
+      this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this);
+      this.map.on(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this);
+    }
+    //鍏抽棴閲婃斁
+    disable() {
+      this.viewWindow = null;
+
+      this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this);
+      this.map.off(mars3d.EventType.removeLayer, this._onRemoveLayerHandler, this);
+    }
+    _onAddLayerHandler(e) {
+      if (!this.isActivate || !this.viewWindow) {
+        return;
+      }
+      console.log("娣诲姞浜嗗浘灞�", e);
+
+      this.viewWindow.updateNode(e.layer);
+    }
+    _onRemoveLayerHandler(e) {
+      if (!this.isActivate || !this.viewWindow) {
+        return;
+      }
+      console.log("绉婚櫎浜嗗浘灞�", e);
+
+      this.viewWindow.removeNode(e.layer);
+    }
+
+    getLayers() {
+      return this.map.getLayers({
+        basemaps: true, //鏄惁鍙朿onfig.json涓殑basempas
+        layers: true, //鏄惁鍙朿onfig.json涓殑layers
+      });
+    }
+    //瀵瑰崟鍑荤殑鍥惧眰鍋氬鐞嗭紙鍗曚釜锛�
+    checkClickLayer(layer, show) {
+      if (show) {
+        if (this.config.autoCenter && !layer.options.noCenter) {
+          //鍦ㄥ搴攃onfig.json鍥惧眰鑺傜偣閰嶇疆 noCenter:true 鍙互涓嶅畾浣�
+          layer.flyTo();
+        }
+
+        //瀛樺湪鍏宠仈widget鏃�
+        let item = layer.options;
+        if (item.onWidget) {
+          if (this._lastWidget) {
+            mars3d.widget.disable(this._lastWidget);
+            this._lastWidget = null;
+          }
+
+          mars3d.widget.activate({
+            uri: item.onWidget,
+            layerItem: item,
+            disableOther: false,
+          });
+          this._lastWidget = item.onWidget;
+        }
+      } else {
+        //瀛樺湪鍏宠仈widget鏃�
+        let item = layer.options;
+        if (item.onWidget) {
+          mars3d.widget.disable(item.onWidget);
+          if (this._lastWidget == item.onWidget) {
+            this._lastWidget = null;
+          }
+        }
+      }
+    }
+
+    //鏇存柊鍥惧眰:鏄剧ず闅愯棌鐘舵�侊紙鍕鹃�夊悗鐨勫浘灞傚強鍏跺瓙绾у浘灞傦紝澶氫釜锛�
+    updateLayerShow(layer, show) {
+      layer.show = show;
+
+      if (show) {
+        if (!layer.isAdded) {
+          this.map.off(mars3d.EventType.addLayer, this._onAddLayerHandler, this);
+          this.map.addLayer(layer);
+          this.map.on(mars3d.EventType.addLayer, this._onAddLayerHandler, this);
+        }
+      } else {
+        // if (layer.isAdded) {
+        //   this.map.removeLayer(layer)
+        // }
+      }
+    }
+  }
+
+  //娉ㄥ唽鍒皐idget绠$悊鍣ㄤ腑銆�
+  mars3d.widget.bindClass(MyWidget);
+
+  //姣忎釜widet涔嬮棿閮芥槸鐩存帴寮曞叆鍒癷ndex.html涓紝浼氬瓨鍦ㄥ郊姝ゅ懡鍚嶅啿绐侊紝鎵�浠ラ棴鍖呭鐞嗕笅銆�
+})(window, mars3d);
diff --git a/widgets/toolBarRight/view.css b/widgets/toolBarRight/view.css
index c415efc..62e9582 100644
--- a/widgets/toolBarRight/view.css
+++ b/widgets/toolBarRight/view.css
@@ -1,5 +1,3 @@
-/* 2017-12-5 14:44:06 | 淇敼 鏈ㄩ仴锛堝井淇�:  http://marsgis.cn/weixin.html 锛� */
-
 .toolBarRight {
   position: absolute;
   top: 10px;
diff --git a/widgetsTS/dataTime/view.css b/widgetsTS/dataTime/view.css
index a147d58..c9e1c79 100644
--- a/widgetsTS/dataTime/view.css
+++ b/widgetsTS/dataTime/view.css
@@ -1,6 +1,6 @@
 .append_test {
     position: absolute;
-    top: 50px;
-    right:100px;
+    top: 15px;
+    right:500px;
     z-index: 999;
 }
diff --git a/widgetsTS/dataTime/view.html b/widgetsTS/dataTime/view.html
index 51378e1..3266e2b 100644
--- a/widgetsTS/dataTime/view.html
+++ b/widgetsTS/dataTime/view.html
@@ -1,25 +1,25 @@
 <div class="btn-group append_test">
-    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
-        <span class="fa fa-globe" id="current">灏忔椂锛�2020-01-01 09:00:00</span>
-    </button>
-    <ul class="dropdown-menu">
-        <input type="radio" name="datatype" value="hour" title="灏忔椂鏁版嵁" checked>
-        <input type="radio" name="datatype" value="day" title="澶╂暟鎹�" >
+  <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
+    <span class="fa fa-globe" id="current">灏忔椂锛�2020-01-01 09:00:00</span>
+  </button>
+  <ul class="dropdown-menu">
+    <input type="radio" name="datatype" value="hour" title="灏忔椂鏁版嵁" checked>灏忔椂
+    <input type="radio" name="datatype" value="day" title="澶╂暟鎹�">澶�
 
-        <div class="layui-form">
-            <div class="layui-form-item">
-              <div class="layui-inline">
-                <div class="layui-input-inline">
-                  <input type="text" class="layui-input" id="datatype_day" placeholder="yyyy-MM-dd">
-                </div>
-              </div>
-              <div class="layui-inline">
-                <div class="layui-input-inline">
-                    <input type="text" class="layui-input" id="test5" placeholder="yyyy-MM-dd HH">
-                </div>
-              </div>
-            </div>
+    <div class="layui-form">
+      <div class="layui-form-item">
+        <div class="layui-inline">
+          <div class="layui-input-inline">
+            <input type="text" class="layui-input" id="datatype_day" placeholder="yyyy-MM-dd">
           </div>
-       
-    </ul>
-</div>
+        </div>
+        <div class="layui-inline">
+          <div class="layui-input-inline">
+            <input type="text" class="layui-input" id="datatype_hour" placeholder="yyyy-MM-dd HH">
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </ul>
+</div>
\ No newline at end of file
diff --git a/widgetsTS/dataTime/widget.js b/widgetsTS/dataTime/widget.js
index 285bf18..9873d6d 100644
--- a/widgetsTS/dataTime/widget.js
+++ b/widgetsTS/dataTime/widget.js
@@ -16,10 +16,7 @@
     }
     //椤甸潰閰嶇疆锛� append鏄坊鍔燚OM鑺傜偣鍒癶tml涓殑鏂瑰紡
     get view() {
-      return {
-        type: 'append',
-        url: 'view.html',
-      }
+      return { type: "append", url: "view.html", parent: "body" };
     }
 
     //鍒濆鍖朳浠呮墽琛�1娆
@@ -30,11 +27,27 @@
       if (window.top) {
         request = $.extend(request, haoutil.system.getRequest(window.top));
       }
-      mars3d.globel_variables.userid = request.userid || 2;
-      mars3d.globel_variables.queryDataType = "hour";
+      mars3d.globel_variables = {userid:request.userid || 2,queryDataType:'hour'};
+
       mars3d.globel_variables.queryDataTStart = getDefaultDateTime();
       mars3d.globel_variables.queryDataTEnd = getDefaultDateTime();
 
+
+      $('input[type=radio][name=datatype]').change(function() {
+        mars3d.globel_variables.queryDataType = this.value ; 
+        console.log( mars3d.globel_variables.queryDataType);      
+      });
+
+      $('#current').val(mars3d.globel_variables.queryDataType=='hour'?'灏忔椂':'澶�'+mars3d.globel_variables.queryDataTStart);
+      $('#current').val(mars3d.globel_variables.queryDataType=='hour'?'灏忔椂':'澶�'+mars3d.globel_variables.queryDataTStart);
+
+      //$('#datatype_day').datepicker();
+      jeDate("#datatype_day",{
+        format:"YYYY-MM-DD",
+        isTime:true,
+        minDate:"2014-09-19 00:00:00"
+    })
+
       
 
 

--
Gitblit v1.9.1