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