From 6ef0b98edd9915b321566801a17376a45ef145c4 Mon Sep 17 00:00:00 2001
From: qinbo <qinbo@shsening.com>
Date: 星期二, 28 九月 2021 17:59:46 +0800
Subject: [PATCH] Merge branch 'master' of http://www.shsening.com:10000/r/template/shanghai

---
 js/function_1001.js |  219 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 184 insertions(+), 35 deletions(-)

diff --git a/js/function_1001.js b/js/function_1001.js
index 6097328..1b07f7b 100644
--- a/js/function_1001.js
+++ b/js/function_1001.js
@@ -1,36 +1,96 @@
 "use script"; //寮�鍙戠幆澧冨缓璁紑鍚弗鏍兼ā寮�
 //绯荤粺 鍔熻兘鍏ュ彛
 
-var guokong_color_list = ['#0EE839', '#FEFE23', '#FD9D00', '#F70F0D', '#8A0B73', '#88041E'];
-var guokong_color_nodata = '#C0C0C0';
-var guokong_qindex_color_list = { 'pm25': [35, 75, 115, 150, 250], 'pm10': [50, 150, 250, 350, 420], 'no2': [100, 200, 700, 1200, 2340], 'co': [5, 10, 35, 60, 90] };
-var guokong_data_list;
+
+var allLayer_color_nodata = '#C0C0C0';
+var color_list_1001 = ['#0EE839', '#FEFE23', '#FD9D00', '#F70F0D', '#8A0B73', '#88041E'];
+var color_list_1002 = ['#0EE839', '#FEFE23', '#F70F0D'];
+var color_list_1003 = ['#0dd4f7', '#078901', '#FFFF00', '#fe7c23', '#F70F0D', '#88041E'];
+var color_list_1004_and_other = ['#0dd4f7', '#23fe9f', '#078901', '#d4fe23', '#FFFF00', '#febf23', '#fe7c23', '#F70F0D', '#8A0B73', '#88041E'];
+
+var qindex_range_list_1001 = { 'pm25': [35, 75, 115, 150, 250], 'pm10': [50, 150, 250, 350, 420], 'no2': [100, 200, 700, 1200, 2340], 'co': [5, 10, 35, 60, 90] };
+var qindex_range_list_1002 = { 'tsp': [0.2, 0.5] };
+var qindex_range_list_1003 = { 'pm25': [10, 20, 50, 80, 100], 'pm10': [20, 50, 80, 150, 200], 'no2': [25, 50, 100, 150, 300], 'co': [0.5, 0.6, 0.8, 1, 1.5] };
+var qindex_range_list_1004_and_other = { 'pm25': [15, 35, 50, 75, 150, 250, 350, 500, 700], 'pm10': [20, 50, 100, 150, 200, 300, 500, 800, 1000], 'no': [10, 30, 60, 100, 200, 500, 1000, 2000, 3500], 'no2': [20, 80, 110, 150, 200, 250, 300, 400, 500], 'nox': [80, 110, 130, 150, 200, 500, 1000, 2000, 5000], 'co': [0.2, 0.4, 0.6, 0.8, 1, 1.5, 2.5, 4, 6] };
+// for change color locally.
+var data_list_1001;
 
 
-function addGuokongLayerDIV(item) {
+function addWMSLayer(item) {
 
-  var guokongLayer = new mars3d.layer.DivLayer({
+  var wmsLyer = new mars3d.layer.WmsLayer({
     id: item.id,
-    pid: item.pid, //鍥惧眰绠$悊 涓娇鐢紝鐖惰妭鐐筰d
+    pid: item.pid,
     name: item.name,
+    type: "wms",
+    url: mars3d.global_variables.geoserver_url_predix + "/geoserver/konglu_58/wms",
+    layers: "konglu_58:" + item.geoname_prefix + mars3d.global_variables.queryDataType,
+    crs: "EPSG:4326",
+    parameters: {
+      "styles": item.style_prefix + item.style_selected,
+      "transparent": "true",
+      "format": "image/png",
+      "viewparams": "userid:" + mars3d.global_variables.userid + ";datatime:" + mars3d.global_variables.queryDataTStartGeo
+    },
+    center: { "lat": 30.487351, "lng": 121.613269, "alt": 54033, "heading": 359, "pitch": -40 },
+    noCenter: true,
+    maxLength: 35000,
+    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,
+      }),
+    },
+    show: item.show,
+    geoname_prefix: item.geoname_prefix,
+    style_prefix: item.style_prefix,
     style_selected: item.style_selected,
     style_options: item.styleoptions,
-    show: item.show
+    flyTo: false
   });
-  map.addLayer(guokongLayer);
+  wmsLyer.bindPopup(bindPopupFunction);
 
-  guokongLayer.on(mars3d.EventType.click, function (event) {
-    console.log("鐩戝惉layer锛屽崟鍑讳簡鐭㈤噺瀵硅薄", event);
-    console.log(event.graphic?.attr)
-    var item = event.graphic?.attr;
-    //haoutil.msg('鍗曞嚮浜嗭細' + item['楂樻牎鍚嶇О'])
+  //鍗曞嚮浜嬩欢
+  wmsLyer.on(mars3d.EventType.click, function (event) {
+    console.log("鍗曞嚮浜嗙煝閲忔暟鎹紝鍏�" + event.features.length + "鏉�", event);
+    var id = event.layer.options.id;
+    var qindex = event.layer.options.style_selected;
+    event.graphic.style.diffHeight = qindex == 'co' ? 10 * event.graphic.attr[qindex] : event.graphic.attr[qindex];
+    //console.log(id, qindex, event.graphic.attr[qindex]);
+    //console.log(getLayerPointColorByQindexandValue(id, qindex, event.graphic.attr[qindex]));
+    //console.log(Cesium.Color.fromCssColorString(getLayerPointColorByQindexandValue(id, qindex, event.graphic.attr[qindex]))) 
+    //event.graphic.style.material.uniforms.color = getLayerPointColorByQindexandValue(id, qindex, event.graphic.attr[qindex]);
+    //event.graphic.style.material.uniforms.color = getLayerPointColorByQindexandValue(id, qindex, event.graphic.attr[qindex]);
+    event.graphic.style.material = new mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
+      image: "img/textures/fence.png",
+      color: getLayerPointColorByQindexandValue(id, qindex, event.graphic.attr[qindex]),
+      speed: 10, //閫熷害锛屽缓璁彇鍊艰寖鍥�1-100
+      axisY: true,
+    })
+    mars3d.global_variables.tmpHighlightGraphic = event.graphic;
   });
 
-  guokongLayer.bindPopup(function (event) {
-    let item = event.graphic?.attr;
-    //console.log(item);
-    var html =
-      "绔欑偣缂栧彿锛�" +
+  map.addLayer(wmsLyer);
+
+}
+
+function bindPopupFunction(event) {
+
+  let layerid = event.layer.options.id;
+  let item = event.graphic?.attr;
+  if (!item) {
+    return "";
+  }
+  if (layerid == 1001) {
+    return "绔欑偣缂栧彿锛�" +
       item["code"] +
       "<br />绔欑偣鍚嶇О锛�" +
       item["name"] +
@@ -46,16 +106,93 @@
       item["CO"] + "ug/m3" +
       "<br />SO2:" +
       item["SO2"] + "ug/m3" +
-      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\"" + item["code"] + "\")' >璇︾粏淇℃伅</a></p>";
-    return html;
+      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1001,\"" + item["code"] + "\")' >璇︾粏淇℃伅</a><a href='#' onclick='javascript:addGraphictoHighlightLayer()' >淇濇寔楂樹寒鏄剧ず</a></p>";
+  } else if (layerid == 1002) {
+    return "绔欑偣缂栧彿锛�" +
+      item["code"] +
+      "<br />绔欑偣鍚嶇О锛�" +
+      item["name"] +
+      "<br />鏁版嵁鏃堕棿锛�" +
+      item["datatime"] +
+      "<br />PM2.5:" +
+      item["PM25"] + "ug/m3" +
+      "<br />PM10:" +
+      item["PM10"] + "ug/m3" +
+      "<br />NO2:" +
+      item["NO2"] + "ug/m3" +
+      "<br />CO:" +
+      item["CO"] + "ug/m3" +
+      "<br />SO2:" +
+      item["SO2"] + "ug/m3" +
+      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1002,\"" + item["code"] + "\")' >璇︾粏淇℃伅</a><a href='#' onclick='javascript:addGraphictoHighlightLayer()' >淇濇寔楂樹寒鏄剧ず</a></p>";
+
+  } else if (layerid == 1003) {
+    return "绔欑偣缂栧彿锛�" +
+      item["code"] +
+      "<br />绔欑偣鍚嶇О锛�" +
+      item["name"] +
+      "<br />鏁版嵁鏃堕棿锛�" +
+      item["datatime"] +
+      "<br />PM2.5:" +
+      item["PM25"] + "ug/m3" +
+      "<br />PM10:" +
+      item["PM10"] + "ug/m3" +
+      "<br />NO2:" +
+      item["NO2"] + "ug/m3" +
+      "<br />CO:" +
+      item["CO"] + "ug/m3" +
+      "<br />SO2:" +
+      item["SO2"] + "ug/m3" +
+      "<br /><br /><p><a href='#' onclick='javascript:showDetail(1003,\"" + item["code"] + "\")' >璇︾粏淇℃伅</a><a href='#' onclick='javascript:addGraphictoHighlightLayer()' >淇濇寔楂樹寒鏄剧ず</a></p>";
+
+  } else {
+
+    return "绔欑偣缂栧彿锛�" +
+      item["code"] +
+      "<br />绔欑偣鍚嶇О锛�" +
+      item["name"] +
+      "<br />鏁版嵁鏃堕棿锛�" +
+      item["datatime"] +
+      "<br />PM2.5:" +
+      item["PM25"] + "ug/m3" +
+      "<br />PM10:" +
+      item["PM10"] + "ug/m3" +
+      "<br />NO2:" +
+      item["NO2"] + "ug/m3" +
+      "<br />CO:" +
+      item["CO"] + "ug/m3" +
+      "<br />SO2:" +
+      item["SO2"] + "ug/m3" +
+      "<br /><br /><p><a href='#' onclick='javascript:showDetail(" + layerid + ",\"" + item["code"] + "\")' >璇︾粏淇℃伅</a><a href='#' onclick='javascript:addGraphictoHighlightLayer()' >淇濇寔楂樹寒鏄剧ず</a></p>";
+  }
+
+
+}
+
+function addGuokongLayerDIV(item) {
+
+  var guokongLayer = new mars3d.layer.DivLayer({
+    id: item.id,
+    pid: item.pid, //鍥惧眰绠$悊 涓娇鐢紝鐖惰妭鐐筰d
+    name: item.name,
+    style_selected: item.style_selected,
+    style_options: item.styleoptions,
+    show: item.show,
+  });
+  map.addLayer(guokongLayer);
+
+  guokongLayer.on(mars3d.EventType.click, function (event) {
+    console.log("鐩戝惉layer锛屽崟鍑讳簡鐭㈤噺瀵硅薄", event);
+    console.log(event.graphic?.attr)
+    var item = event.graphic?.attr;
+    //haoutil.msg('鍗曞嚮浜嗭細' + item['楂樻牎鍚嶇О'])
   });
 
+  guokongLayer.bindPopup(bindPopupFunction);
+
   guokongLayer.changeColor = function () {
-
     guokongLayer.clear(true);
-
-    addGuokongPointResutToLayer(this, guokong_data_list);
-
+    addGuokongPointResutToLayer(this, data_list_1001);
   }
   // add 鍥芥帶鐐�
   getGuokongPointFromServer(guokongLayer);
@@ -65,7 +202,7 @@
 function getGuokongPointFromServer(tmplayer) {
 
   $.getJSON(mars3d.global_variables.nodejs_url_predix + "dataapi/Bdata?bid=get_1001_list&datatype=" + mars3d.global_variables.queryDataType + "&datatime=" + mars3d.global_variables.queryDataTStart + "&qindex=pm25&pageno=1&pagesize=1000", (result) => {
-    guokong_data_list = result.data.result;
+    data_list_1001 = result.data.result;
     addGuokongPointResutToLayer(tmplayer, result.data.result);
   });
 
@@ -76,7 +213,7 @@
     var item = items[i];
     var jd = item.lon;
     var wd = item.lat;
-    var clr = getGuokongPointColor(tmplayer.options.style_selected, item[(tmplayer.options.style_selected).toUpperCase()]);
+    var clr = getLayerPointColorByQindexandValue(tmplayer.options.id, tmplayer.options.style_selected, item[(tmplayer.options.style_selected).toUpperCase()]);
     var graphic = new mars3d.graphic.DivLightPoint({
       position: Cesium.Cartesian3.fromDegrees(jd, wd),
       style: {
@@ -102,19 +239,31 @@
 
 }
 
-
-function getGuokongPointColor(qindex, value) {
+function getLayerPointColorByQindexandValue(layerid, qindex, value) {
 
   if (!value || value == null || value == 'null') {
-    return guokong_color_nodata;
+    return allLayer_color_nodata;
   }
-  for (var key in guokong_qindex_color_list) {
-    if (key == qindex) {
-      for (let i = guokong_qindex_color_list[key].length; i > -1; i--) {
-        if (value > guokong_qindex_color_list[key][i]) {
-          return guokong_color_list[i + 1];
+  if (layerid == 1001) {
+    return getColorByListandValue(qindex_range_list_1001, color_list_1001, qindex, value);
+  } else if (layerid == 1002) {
+    return getColorByListandValue(qindex_range_list_1002, color_list_1002, qindex, value);
+  } else if (layerid == 1003) {
+    return getColorByListandValue(qindex_range_list_1003, color_list_1003, qindex, value);
+  } else {
+    return getColorByListandValue(qindex_range_list_1004_and_other, color_list_1004_and_other, qindex, value);
+  }
+}
+
+function getColorByListandValue(rangList, colorList, tmpQindex, tmpValue) {
+  for (var key in rangList) {
+    if (key == tmpQindex) {
+      for (let i = rangList[key].length; i > -1; i--) {
+        if (tmpValue > rangList[key][i]) {
+          return colorList[i + 1];
         }
       }
     }
   }
+  return allLayer_color_nodata;
 }
\ No newline at end of file

--
Gitblit v1.9.1