From 9e6ae70ce9382592bdcc33478b6e505a7682c711 Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期二, 28 九月 2021 16:30:44 +0800
Subject: [PATCH] add taxi layer change color

---
 js/function_1004.js |   97 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 84 insertions(+), 13 deletions(-)

diff --git a/js/function_1004.js b/js/function_1004.js
index 696cdcb..eb75b95 100644
--- a/js/function_1004.js
+++ b/js/function_1004.js
@@ -1,19 +1,22 @@
 "use script"; //寮�鍙戠幆澧冨缓璁紑鍚弗鏍兼ā寮�
 //绯荤粺 鍔熻兘鍏ュ彛
 
-var taxi_data_list;
+var data_list_1004;
+var data_list_1004_paths = new Map();
+var taxi_layer;
+
 
 function addTaxiLayer(item) {
 
-  var taxi_layer = new mars3d.layer.GraphicLayer({
+  taxi_layer = new mars3d.layer.GraphicLayer({
     id: item.id,
     name: item.name,
     pid: item.pid, //鍥惧眰绠$悊 涓娇鐢紝鐖惰妭鐐筰d
     center: { "lat": 30.62156, "lng": 121.44918, "alt": 48716, "heading": 359, "pitch": -40 },
     noCenter: true,
-    style_selected:item.style_selected,
+    style_selected: item.style_selected,
     style_options: item.styleoptions,
-    show: true,
+    show: item.show,
     onWidget: "widgetsTS/taxi_layer_setting/widget.js",
   });
   map.addLayer(taxi_layer);
@@ -49,17 +52,17 @@
     return html;
   });
 
-  getTaxiListByUserId(taxi_layer);
+  getTaxiListFromServerByUserId(taxi_layer);
 }
 
-function getTaxiListByUserId(tmpLayer) {
+function getTaxiListFromServerByUserId(tmpLayer) {
 
   setTaxiLayerMapClock();
   $.getJSON(mars3d.global_variables.nodejs_url_predix + "dataapi/Bdata?bid=get_1004_list_by_userid&userid=" + mars3d.global_variables.userid, (result) => {
-    taxi_data_list = result.data.result;
+    data_list_1004 = result.data.result;
     for (var i = 0, len = result.data.result.length; i < len; i++) {
       let item = result.data.result[i];
-      addTaxiPathToLayer(item, tmpLayer);
+      getTaxiPathFromServerbySN(item, tmpLayer);
     }
   });
 
@@ -70,10 +73,58 @@
   map.clock.startTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTStart));
   map.clock.currentTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTStart));
   map.clock.stopTime = Cesium.JulianDate.fromDate(new Date(mars3d.global_variables.queryDataTEnd));
-  map.clock.multiplier = 5.0;
+  map.clock.multiplier = 2.0;
   map.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
+
+  var last_time_second = 0;
+
+
+  map.on(mars3d.EventType.clockTick, function (event) {
+
+    var current_date = new Date(Cesium.JulianDate.toDate(event._currentTime));
+
+    if (current_date.getSeconds() != last_time_second) {
+      last_time_second = current_date.getSeconds();
+      changeTaxiLayerStyleAndAttr(getFormattedDateTime(current_date));
+
+    }
+
+  });
 }
-function addTaxiPathToLayer(item, target_layer) {
+
+function changeTaxiLayerStyleAndAttr(current_date) {
+
+  var tmpattr;
+  //current_date = "2021-07-01 00:00:32";
+  taxi_layer.eachGraphic(function (item) {
+    tmpattr = getTaxiAttrFromTimeListData(current_date, data_list_1004_paths.get(item.options.id));
+    //console.log(tmpattr);
+    if (tmpattr && tmpattr != null) {
+      //item.options.attr = tmpattr;
+
+      item.setOptions({
+        attr: tmpattr,
+        style: {
+          label: {
+            color: getLayerPointColorByQindexandValue(1004, item._layer.options.style_selected, tmpattr[item._layer.options.style_selected]),
+          }
+        }
+      })
+      //item.options.style.label.color = getLayerPointColorByQindexandValue(1004, item._layer.options.style_selected, tmpattr[item._layer.options.style_selected]);
+      //console.log('color has been changed.' + item.options.id);
+    }
+
+  });
+}
+function getTaxiAttrFromTimeListData(datetime, datalist) {
+  for (var i = 0; i < datalist.length; i++) {
+    if (datalist[i]["datatime"] == datetime) {
+      return datalist[i];
+    }
+  }
+}
+
+function getTaxiPathFromServerbySN(item, target_layer) {
 
   $.getJSON(mars3d.global_variables.nodejs_url_predix + "dataapi/Bdata?bid=get_1004_single_path&siteid=" + item["code"], {
     datatime1: mars3d.global_variables.queryDataTStart,
@@ -81,6 +132,8 @@
   }, (result) => {
 
     if (result.data.result.length > 0) {
+      // 淇濆瓨涓存椂鏁版嵁锛屼负鍚庣画鏇挎崲棰滆壊鍋氬噯澶囥��
+      data_list_1004_paths.set(result.data.result[0].code, result.data.result);
       var tmpPositionProperty = new Cesium.SampledPositionProperty();
       for (var i = 0, len = result.data.result.length; i < len; i++) {
         let item = result.data.result[i];
@@ -89,9 +142,10 @@
       }
 
       let graphic = new mars3d.graphic.ModelEntity({
+        id: result.data.result[0].code,
         attr: result.data.result[0],
         style: {
-          url: "gltf/" + (item["code"]).substring(0, 2) + ".gltf",
+          url: "gltf/" + (result.data.result[0]["code"]).substring(0, 2) + ".gltf",
           scale: 0.5,
           minimumPixelSize: 20,
           highlight: {
@@ -102,7 +156,7 @@
           },
           label: {
             //涓嶉渶瑕佹枃瀛楁椂锛屽幓鎺塴abel閰嶇疆鍗冲彲
-            text: item["code"],
+            text: result.data.result[0]["code"],
             font_size: 16,
             // TODO need to be changed according to qindex color.
             color: "#ff00ff",
@@ -111,7 +165,7 @@
             pixelOffsetY: -20,
             distanceDisplayCondition: true,
             distanceDisplayCondition_far: 50000,
-            distanceDisplayCondition_near: 0,
+            distanceDisplayCondition_near: 100,
           },
         },
       });
@@ -119,4 +173,21 @@
       target_layer.addGraphic(graphic);
     }
   });
+}
+
+function getFormattedDateTime(date) {
+
+  var year = date.getFullYear();//骞�
+  var month = date.getMonth();//鏈�
+  var day = date.getDate();//鏃�
+  var hours = date.getHours();//鏃�
+  var mins = date.getMinutes();//鍒�
+  var seconds = date.getSeconds();//绉�
+
+  return date.getFullYear() + "-" +
+    ((month + 1) > 9 ? (month + 1) : "0" + (month + 1)) + "-" +
+    (day > 9 ? day : ("0" + day)) + " " +
+    (hours > 9 ? hours : ("0" + hours)) + ":" +
+    (mins > 9 ? mins : ("0" + mins)) + ":" +
+    (seconds > 9 ? seconds : ("0" + seconds));
 }
\ No newline at end of file

--
Gitblit v1.9.1