From eb4111e0fd7110e5aa6a00608da2da9af21a3035 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 20 十月 2025 10:13:32 +0800
Subject: [PATCH] 2025.10.18 修改嫉妒报告生成逻辑
---
src/utils/map/grid.js | 99 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 73 insertions(+), 26 deletions(-)
diff --git a/src/utils/map/grid.js b/src/utils/map/grid.js
index 64a4cdf..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,
@@ -264,7 +270,8 @@
strokeWeight: 1, //绾挎潯瀹藉害锛岄粯璁や负 2
strokeColor: 'white', //绾挎潯棰滆壊
fillOpacity: 0,
- extData: p.extData
+ extData: p.extData,
+ zIndex: 11
});
if (typeof event === 'function') {
@@ -279,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
});
@@ -304,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) {
@@ -349,15 +391,20 @@
* @param {number} opacity 閫忔槑搴�
*/
drawGridColor(gridViews, gridDataDetail, factorName, style) {
- let { strokeWeight, strokeColor, opacity, zIndex } = style;
+ let {
+ strokeWeight = 1,
+ strokeColor = 'white',
+ opacity = 1,
+ zIndex = 11
+ } = style;
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);
@@ -369,9 +416,11 @@
const _extData = grid.getExtData();
grid.setOptions({
- ...style,
+ strokeWeight,
+ strokeColor,
+ zIndex,
fillColor: _color, //澶氳竟褰㈠~鍏呴鑹�
- fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1,
+ fillOpacity: opacity,
extData: {
..._extData,
gridData: d
@@ -393,27 +442,26 @@
return res;
},
- drawGridColorCustom(gridViews, gridDataDetail, style) {
- const { strokeWeight, strokeColor, opacity, zIndex } = style;
-
+ 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);
@@ -424,9 +472,8 @@
ratio
);
grid.setOptions({
- ...style,
- fillColor: _color, //澶氳竟褰㈠~鍏呴鑹�
- fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 0.7
+ fillColor: _color //澶氳竟褰㈠~鍏呴鑹�
+ // fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1
});
res.push(grid);
--
Gitblit v1.9.3