From 2592dc279ec82bf3649a4dbe644c6416263a10ef Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 07 三月 2025 17:10:25 +0800 Subject: [PATCH] 各模块功能新增 --- src/utils/map/grid.js | 131 ++++++++++++++++++++++++++----------------- 1 files changed, 78 insertions(+), 53 deletions(-) diff --git a/src/utils/map/grid.js b/src/utils/map/grid.js index 49b87d9..cbd6e1c 100644 --- a/src/utils/map/grid.js +++ b/src/utils/map/grid.js @@ -84,15 +84,17 @@ * 鏂囨湰鏍囪 * 鍙慨鏀筽osition */ -function textMaker(position, text, anchor, type) { +function textMaker({ position, text, anchor, type, color }) { let style = {}; if (type == 'data') { style = { 'font-size': '12px', 'text-align': 'center', - color: 'white', + 'font-weight': 600, + color: color ? color : 'white', background: '#122b54a9', - 'text-shadow': 'black 2px 2px 2px', + // background: 'white', + 'text-shadow': 'black 1px 1px 1px', border: '0px', 'margin-top': '4px' }; @@ -100,11 +102,12 @@ style = { 'font-size': '14px', 'text-align': 'center', - color: 'white', + color: color ? color : 'white', background: 'transparent', 'text-shadow': 'black 2px 2px 2px', 'border-radius': '2px', border: '1px solid #122b54a9', + // border: '1px solid rgba(255, 255, 255, 0.62)', 'margin-bottom': '4px' }; } @@ -152,6 +155,60 @@ } } }); +} + +/** + * 璁$畻姣忎釜缃戞牸棰滆壊 + */ +function calGridColor({ factorName, data, isCustomColor }) { + let _colorList = []; + if (isCustomColor) { + var max, min; + data.forEach((t) => { + if (!t) return; + if (!max || t > max) { + max = t; + } + if (!min || t < min) { + min = t; + } + }); + data.forEach((d) => { + if (d) { + // 鏍规嵁閬ユ祴鏁版嵁璁$畻缃戞牸棰滆壊 + const { color, nextColor, range, nextRange } = + Legend.getCustomColorAndNext(d, min, max); + const ratio = (d - range) / (nextRange - range); + + const _color = getColorBetweenTwoColors( + color.map((v) => v * 255), + nextColor.map((v) => v * 255), + ratio + ); + _colorList.push(_color); + } else { + _colorList.push(undefined); + } + }); + } else { + data.forEach((d) => { + if (d) { + // 鏍规嵁閬ユ祴鏁版嵁璁$畻缃戞牸棰滆壊 + const { color, nextColor, range, nextRange } = + Legend.getStandardColorAndNext(factorName, d); + const ratio = (d - range) / (nextRange - range); + const _color = getColorBetweenTwoColors( + color.map((v) => v * 255), + nextColor.map((v) => v * 255), + ratio + ); + _colorList.push(_color); + } else { + _colorList.push(undefined); + } + }); + } + return _colorList; } export default { @@ -222,28 +279,27 @@ return gridViews; }, - drawGridText(points, textViews, anchor, type) { - // if (textViews) { - // points.forEach((p, i) => { - // textViews[i].setPosition(p.lnglat_GD); - // textViews[i].setText(p.data); - // }); - // return textViews; - // } else { - // const _textViews = []; - // points.forEach((p) => { - // const m = textMaker(p.lnglat_GD, p.data, anchor, type); - // _textViews.push(m); - // }); - // map.add(_textViews); - // return { textViews: _textViews }; - // } + drawGridText({ points, textViews, anchor, type, isCustomColor, useColor }) { + let colorList = []; + if (useColor) { + colorList = calGridColor({ + factorName: 'PM25', + data: points.map((p) => p.data), + isCustomColor: isCustomColor + }); + } if (textViews) { map.remove(textViews); } const _textViews = []; - points.forEach((p) => { - const m = textMaker(p.lnglat_GD, p.data, anchor, type); + points.forEach((p, i) => { + const m = textMaker({ + position: p.lnglat_GD, + text: p.data, + anchor, + type, + color: useColor ? colorList[i] : 'white' + }); _textViews.push(m); }); // map.add(_textViews); @@ -320,21 +376,6 @@ }); return res; - // gridViews.forEach((g, i) => { - // const data = parseFloat(gridDataDetail[i]); - // const { color, nextColor, range, nextRange } = - // Legend.getStandardColorAndNext(factorName, data); - // const ratio = (data - range) / (nextRange - range); - // const _color = getColorBetweenTwoColors( - // color.map((v) => v * 255), - // nextColor.map((v) => v * 255), - // ratio - // ); - // g.setOptions({ - // fillColor: _color, - // fillOpacity: color[3] == 0 ? 0 : 0.7 - // }); - // }); }, drawGridColorCustom(gridViews, gridDataDetail, opacity) { @@ -375,21 +416,5 @@ }); return res; - // gridViews.forEach((g, i) => { - // const data = parseFloat(gridDataDetail[i]); - // const { color, nextColor, range, nextRange } = - // Legend.getCustomColorAndNext(data, min, max); - // const ratio = (data - range) / (nextRange - range); - - // const _color = getColorBetweenTwoColors( - // color.map((v) => v * 255), - // nextColor.map((v) => v * 255), - // ratio - // ); - // g.setOptions({ - // fillColor: _color, - // fillOpacity: color[3] == 0 ? 0 : 0.7 - // }); - // }); } }; -- Gitblit v1.9.3