Top
Fork me on Gitee My Github

Vue -- highcharts map使用

highcharts中国地图使用

highcharts非商用免费,所以大多数正式上线的网站都会选择开源免费的echarts,其实,对于开发者highcharts功能也是很庞大的

下载npm install highcharts -S

vue文件引入

<template>
  <div>
    <div
      ref="mapChina"
      :class="className"
      :style="{ height: height, width: width }"
    />
  </div>
</template>
<script>
import Highcharts from "highcharts/highstock";
import HighchartsMore from "highcharts/highcharts-more";
// import HighchartsDrilldown from 'highcharts/modules/drilldown';
// import Highcharts3D from 'highcharts/highcharts-3d';
import Highmaps from "highcharts/modules/map";
HighchartsMore(Highcharts);
// HighchartsDrilldown(Highcharts);
// Highcharts3D(Highcharts);
Highmaps(Highcharts);
// @/assets/map/china.js 为 https://data.jianshukeji.com/geochina/china.js 文件export default {"title":"中国"...... 引入
import china from "@/assets/map/china.js";

export default {
  props: {
    className: {
      type: String,
      default: "chart",
    },
    width: {
      type: String,
      default: "100%",
    },
    height: {
      type: String,
      default: "460px",
    },
    chinaMapData: {
      type: Array,
      default: () => [],
    },
  },
  data() {
    return {
      chart: null,
    };
  },
  methods: {
    copydeep(obj) {
      var newobj = obj.constructor === Array ? [] : {};
      if (typeof obj !== "object") {
        return;
      }
      for (var i in obj) {
        newobj[i] = typeof obj[i] === "object" ? this.copydeep(obj[i]) : obj[i];
      }
      return newobj;
    },
    initChart() {
      var that = this;
      // 将传过来的值进行深拷贝(如果数据是上一级传递下来的,并且还有table需要使用,这里需要重新定义一个变量接收)
      // var data = this.copydeep(this.chinaMapData);
      var data = [];
      data.push({"name":"辽宁","citys":[], value: 0})
      data.push({"name":"重庆","citys":[{"name":"重庆市","value":1,"ratio":100.0}], value: 1})
      data.push({"name":"上海","citys":[{"name":"上海市","value":2,"ratio":100.0}], value: 2})
      data.push({"name":"天津","citys":[{"name":"天津市","value":3,"ratio":100.0}], value: 3})
      that.chart = new Highcharts.Map(this.$refs.mapChina, {
        chart: {},
        title: {
          text: "",
        },
        credits: { enabled: false }, // 版权信息
        tooltip: {
          formatter: function () {
            if (!this.point.value) {
              return this.point.name;
            } else {
              return this.point.name + ":" + this.point.value;
            }
          },
        },
        colorAxis: {
          min: 0,
          minColor: "#fff",
          maxColor: "#006cee",
          tickColor: "#ff0000",
          labels: {
            style: {
              color: "red",
              fontWeight: "bold"
            },
          },
        },
        series: [
          {
            cursor: "pointer",
            data: data,
            mapData: china,
            joinBy: "name",
            title: "",
            states: {
              hover: {
                color: "#a4edba",
              },
            },
          },
        ],
      });
    },
  },
};
</script>

posted @ 2021-01-25 17:21  lisashare  阅读(768)  评论(0编辑  收藏  举报