• echarts 实现省市地图


    1、带tab 切换的

    <template>
      <div :id="id" class="o-echarts" style="height:800px;600px;"></div>
    </template>
    
    <script>
    import * as echarts from 'echarts'
    import JSON from "./henan.json";
    
    export default {
      name: "echart-map",
      data() {
        return {
          id: "echarts_" + new Date().getTime() + Math.floor(Math.random() * 1000),
          echartObj: null,
          radioList: {
            A: "年度总项目数据查询",
            B: "军转干部在岗培训项目",
            C: "专技人员公需科目项目",
            D: "专技人员新取得中级职称岗前培训项目",
            E: "事业单位新进人员岗前培训项目",
          },
          radioActive: "A",
          option: {
            title: {
              text: "选择所要查询的数据维度",
              top: "3%",
              left: "5%",
              textStyle: {
                fontSize: 18,
                fontWeight: 300,
                color: "#b6d7ff",
              },
            },
            tooltip: {
              padding: 0,
              backgroundColor: "transparent",
              formatter: (params) => {
                // params.data
                return `<table class="map__tooltip o_font20">
                                        <thead>
                                           <tr>
                                               <th>总购买人数</th>
                                               <th>本年度总购买人数</th>
                                               <th>本月度总购买人数</th>
                                               <th>总完成人数</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <th>${params.data.obj.a}</th>
                                                <th>${params.data.obj.b}</th>
                                                <th>${params.data.obj.c}</th>
                                                <th>${params.data.obj.d}</th>
                                             </tr>
                                        </tbody>
                                    </table>`;
              },
            },
            legend: {
              orient: "vertical",
              top: "9%",
              left: "5%",
              icon: "circle",
              data: [],
              selectedMode: "single",
              selected: {},
              itemWidth: 12,
              itemHeight: 12,
              itemGap: 30,
              inactiveColor: "#b6d7ff",
              textStyle: {
                color: "#ec808d",
                fontSize: 14,
                fontWeight: 300,
                padding: [0, 0, 0, 15],
              },
            },
            visualMap: {
              min: 0,
              max: 500,
              show: false,
              splitNumber: 5,
              inRange: {
                color: [
                  "#FACD91",
                  "#74DFB2",
                  "#81D3F8",
                  "#768FDE",
                  "#e9969f",
                ].reverse(),
              },
              textStyle: {
                color: "#fff",
              },
            },
            geo: {
              map: "河南",
              label: {
                normal: {
                  show: true,
                  color: "#000",
                },
                emphasis: {
                  show: true,
                  color: "#fff",
                },
              },
              roam: false,
              itemStyle: {
                normal: {
                  areaColor: "#8db200",
                  borderColor: "#6367ad",
                  borderWidth: 1,
                },
                emphasis: {
                  areaColor: "#feb6aa", // hover效果
                },
              },
              left: "5%",
              right: "5%",
              top: "5%",
              bottom: "5%",
            },
            series: [
              {
                name: "年度总项目数据查询",
                type: "map",
                geoIndex: 0, // 不可缺少,否则无tooltip 指示效果
                data: [],
              },
            ],
          },
        };
      },
      mounted() {
        this.echartObj = echarts.init(document.getElementById(this.id));
        echarts.registerMap("河南", JSON);
        this.echartObj.setOption(this.getOptions(), true);
        this.echartObj.on("legendselectchanged", (params) => {
          this.radioActive = Object.keys(this.radioList).filter(
            (item) => this.radioList[item] === params.name
          )[0];
          this.echartObj.clear();
          this.echartObj.setOption(this.getOptions());
        });
        window.addEventListener("resize", () => {
          if (this.echartObj && this.echartObj.resize) {
            this.echartObj.resize();
          }
        });
      },
      methods: {
        getOptions() {
          this.setOptions("legend", {
            data: Object.values(this.radioList),
            selected: ((list) => {
              const obj = {};
              Object.keys(list).map((item, index) => {
                obj[list[item]] = item === this.radioActive;
              });
              return obj;
            })(this.radioList),
          });
          this.setOptions(
            "series",
            (() => {
              const arr = [];
              Object.values(this.radioList).map((item, index) => {
                arr[this.radioList[this.radioActive] === item ? "unshift" : "push"](
                  {
                    name: item,
                    type: "map",
                    geoIndex: 0, // 不可缺少,否则无tooltip 指示效果
                    data: this.getSeriesData(item),
                  }
                );
              });
              return arr;
            })()
          );
          return this.option;
        },
        getSeriesData(item) {
          return this.radioList[this.radioActive] === item
            ? JSON.features.map((item) => {
                return {
                  name: item.properties.name,
                  value: Math.ceil(Math.random() * 500),
                  obj: {
                    a: Math.ceil(Math.random() * 500),
                    b: Math.ceil(Math.random() * 500),
                    c: Math.ceil(Math.random() * 500),
                    d: Math.ceil(Math.random() * 500),
                  },
                };
              })
            : [];
        },
        setOptions(objKey, objVal) {
          if (
            this.option[objKey] &&
            typeof this.option[objKey] === "object" &&
            !Array.isArray(this.option[objKey])
          ) {
            this.option[objKey] = Object.assign(this.option[objKey], objVal);
          } else {
            this.option[objKey] = objVal;
          }
          this.$set(this.option, objKey, this.option[objKey]);
        },
      },
    };
    </script>
    View Code
  • 相关阅读:
    架构设计中的方法学——迭代设计
    架构重构改善既有代码的设计
    架构如何为业务和技术“服务”(2)
    架构如何为业务和技术“服务”(1)
    选用面向领域的多层分布式架构(DDD风格架构)的理由
    传话游戏(2013编程之美全国挑战赛资格赛)
    2012年蓝桥杯软件设计大赛河南省初赛试题和答案
    最大值最下化
    NYOJ120 校园网络(强连通缩点targan算法)
    NYOJ176整数划分(二)
  • 原文地址:https://www.cnblogs.com/jervy/p/14324102.html
Copyright © 2020-2023  润新知