riku
2025-05-09 977e332a5338942df338728dbfb77a359e35bd0b
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 @@
  });
}
/**
 * 文本标记
 * 可修改position
 */
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;
}
/**
 * 文本标记
 * 可修改position
 */
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
        });