From ec763e1cb7dca873caf4afbc0dfde047b51753d3 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 17 十月 2025 17:26:54 +0800
Subject: [PATCH] 2025.10.17
---
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