From 5f44d21b3921abc88506a7ec46b3fe6f078664aa Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 14 三月 2025 15:33:24 +0800
Subject: [PATCH] 新增走航融合功能(初版)

---
 src/model/Legend.js |  100 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 86 insertions(+), 14 deletions(-)

diff --git a/src/model/Legend.js b/src/model/Legend.js
index 9dfbcc4..05ee593 100644
--- a/src/model/Legend.js
+++ b/src/model/Legend.js
@@ -142,21 +142,13 @@
     ]
   },
 
-  // _custom: [
-  //   [0.05, 0.9, 0.03, 0.75],
-  //   [0.3, 0.65, 0.02, 0.75],
-  //   [0.87, 0.92, 0.03, 0.75],
-  //   [0.8, 0.67, 0.04, 0.75],
-  //   [0.92, 0.28, 0.07, 0.75],
-  //   [0.6, 0.05, 0.05, 0.75]
-  // ],
   _custom: [
-    [0, 0.89, 0, 0.75],
-    [1, 1, 0, 0.75],
-    [1, 0.49, 0, 0.75],
-    [1, 0, 0, 0.75],
-    [0.6, 0, 0.3, 0.75],
-    [0.49, 0, 0.14, 0.75]
+    [0.05, 0.9, 0.03, 0.75],
+    [0.3, 0.65, 0.02, 0.75],
+    [0.87, 0.92, 0.03, 0.75],
+    [0.8, 0.67, 0.04, 0.75],
+    [0.92, 0.28, 0.07, 0.75],
+    [0.96, 0.05, 0.05, 0.75]
   ],
 
   getStandardRange: function (name) {
@@ -181,6 +173,9 @@
   },
 
   getColor: function (name, type, data, min, max) {
+    if (!data) {
+      return [0, 0, 0, 0];
+    }
     if (type == this.S_TYPE) {
       return this.getStandardColor(name, data);
     } else {
@@ -247,6 +242,54 @@
     return colors[selected];
   },
 
+  getStandardColorAndNext: function (name, data) {
+    if (!data) {
+      return {
+        color: [0, 0, 0, 0],
+        nextColor: [0, 0, 0, 0],
+        range: 0,
+        nextRange: 0
+      };
+    }
+    let range = this._legend_r[name];
+    let colors = this._legend_c[name];
+    if (range == undefined) {
+      range = this._legend_r['PM25'];
+      colors = this._legend_c['PM25'];
+    }
+
+    let selected = undefined;
+    for (let i = 0; i < range.length; i++) {
+      const d = range[i];
+      let d1 = d;
+      if (name == 'CO') {
+        d1 *= 1000;
+      }
+      if (data >= d1) {
+        selected = i;
+      } else {
+        break;
+      }
+    }
+
+    // 閬垮厤涓嬫爣瓒婄晫
+    if (selected >= colors.length) {
+      selected = colors.length - 1;
+    }
+
+    let nextIndex = selected + 1;
+    if (nextIndex >= colors.length) {
+      nextIndex = colors.length - 1;
+    }
+
+    return {
+      color: colors[selected],
+      nextColor: colors[nextIndex],
+      range: range[selected],
+      nextRange: range[nextIndex]
+    };
+  },
+
   getCustomColor: function (data, min, max) {
     var per = (max - min) / this._custom.length;
     var i = parseInt((data - min) / per);
@@ -254,6 +297,35 @@
       i = this._custom.length - 1;
     }
     return this._custom[i];
+  },
+
+  getCustomColorAndNext: function (data, min, max) {
+    if (!data) {
+      return {
+        color: [0, 0, 0, 0],
+        nextColor: [0, 0, 0, 0],
+        range: 0,
+        nextRange: 0
+      };
+    }
+
+    // 灏嗘暟鎹寜鐓ч鑹叉暟閲忓垎闅旓紝姹傚嚭姣忎竴娈电殑鏁版嵁鍋忕Щ閲�
+    var per = (max - min) / (this._custom.length - 1);
+    // 璁$畻褰撳墠鏁版嵁鎵�鍦ㄧ殑鍒嗘鑼冨洿
+    var i = parseInt((data - min) / per);
+    // 濡傛灉鏄渶澶у�硷紝鍚屾牱鍒嗗壊鍒版渶鍚庝竴娈�
+    if (i == this._custom.length - 1) i--;
+    var range = min + i * per;
+
+    let nextIndex = i + 1;
+    let nextRange = min + nextIndex * per;
+
+    return {
+      color: this._custom[i],
+      nextColor: this._custom[nextIndex],
+      range,
+      nextRange
+    };
   }
 };
 

--
Gitblit v1.9.3