From aa75a9d46ee325f0a92e42f733aabb1f92103aeb Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 28 三月 2025 17:44:29 +0800
Subject: [PATCH] 走航融合模块完成

---
 src/utils/map/grid.js |   79 ++++++++++++++++++++++++++++++---------
 1 files changed, 60 insertions(+), 19 deletions(-)

diff --git a/src/utils/map/grid.js b/src/utils/map/grid.js
index 235b390..dba3ced 100644
--- a/src/utils/map/grid.js
+++ b/src/utils/map/grid.js
@@ -4,6 +4,7 @@
 import { map } from './index_old';
 import calculate from './calculate';
 import { Legend } from '@/model/Legend';
+import { getGridDataDetailFactorValue } from '@/model/GridDataDetail';
 import { getHexColor, getColorBetweenTwoColors } from '../color';
 
 /**
@@ -80,11 +81,7 @@
   });
 }
 
-/**
- * 鏂囨湰鏍囪
- * 鍙慨鏀筽osition
- */
-function textMaker({ position, text, anchor, type, color }) {
+function textMakerStyle({ type, color }) {
   let style = {};
   if (type == 'data') {
     style = {
@@ -111,6 +108,15 @@
       'margin-bottom': '4px'
     };
   }
+  return style;
+}
+
+/**
+ * 鏂囨湰鏍囪
+ * 鍙慨鏀筽osition
+ */
+function textMaker({ position, text, anchor, type, color }) {
+  let style = textMakerStyle({ type, color });
   // eslint-disable-next-line no-undef
   return new AMap.Text({
     text: text,
@@ -280,11 +286,19 @@
     return gridViews;
   },
 
-  drawGridText({ points, textViews, anchor, type, isCustomColor, useColor }) {
+  drawGridText({
+    points,
+    textViews,
+    anchor,
+    type,
+    isCustomColor,
+    useColor,
+    factorName = 'PM25'
+  }) {
     let colorList = [];
     if (useColor) {
       colorList = calGridColor({
-        factorName: 'PM25',
+        factorName,
         data: points.map((p) => p.data),
         isCustomColor: isCustomColor
       });
@@ -305,6 +319,33 @@
     });
     // map.add(_textViews);
     return { textViews: _textViews };
+  },
+
+  changeGridText({
+    points,
+    textViews,
+    type,
+    isCustomColor,
+    useColor,
+    factorName = 'PM25'
+  }) {
+    let colorList = [];
+    if (useColor) {
+      colorList = calGridColor({
+        factorName,
+        data: points.map((p) => p.data),
+        isCustomColor: isCustomColor
+      });
+    }
+    if (textViews) {
+      textViews.forEach((t, i) => {
+        t.setText(points[i].data);
+        t.setStyle(
+          textMakerStyle({ type, color: useColor ? colorList[i] : 'white' })
+        );
+      });
+    }
+    return { textViews };
   },
 
   drawGridTextLabel(points, textViews, labelsLayer, direction) {
@@ -359,11 +400,11 @@
     const res = [];
     // 閬嶅巻鍗槦閬ユ祴鏁版嵁鏁扮粍
     gridDataDetail.forEach((d, i) => {
-      if (d.pm25) {
+      const data = getGridDataDetailFactorValue(d, factorName);
+      if (data) {
         const grid = gridViews[i];
 
         // 鏍规嵁閬ユ祴鏁版嵁璁$畻缃戞牸棰滆壊
-        const data = d.pm25;
         const { color, nextColor, range, nextRange } =
           Legend.getStandardColorAndNext(factorName, data);
         const ratio = (data - range) / (nextRange - range);
@@ -401,26 +442,26 @@
     return res;
   },
 
-  drawGridColorCustom(gridViews, gridDataDetail) {
-
+  drawGridColorCustom(gridViews, gridDataDetail, factorName) {
     var max, min;
     gridDataDetail.forEach((t) => {
-      if (!t.pm25) return;
-      if (!max || t.pm25 > max) {
-        max = t.pm25;
+      const data = getGridDataDetailFactorValue(t, factorName);
+      if (!data) return;
+      if (!max || data > max) {
+        max = data;
       }
-      if (!min || t.pm25 < min) {
-        min = t.pm25;
+      if (!min || data < min) {
+        min = data;
       }
     });
     const res = [];
     // 閬嶅巻鍗槦閬ユ祴鏁版嵁鏁扮粍
     gridDataDetail.forEach((d, i) => {
-      if (d.pm25) {
+      const data = getGridDataDetailFactorValue(d, factorName);
+      if (data) {
         const grid = gridViews[i];
 
         // 鏍规嵁閬ユ祴鏁版嵁璁$畻缃戞牸棰滆壊
-        const data = d.pm25;
         const { color, nextColor, range, nextRange } =
           Legend.getCustomColorAndNext(data, min, max);
         const ratio = (data - range) / (nextRange - range);
@@ -431,7 +472,7 @@
           ratio
         );
         grid.setOptions({
-          fillColor: _color, //澶氳竟褰㈠~鍏呴鑹�
+          fillColor: _color //澶氳竟褰㈠~鍏呴鑹�
           // fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1
         });
 

--
Gitblit v1.9.3