阿尔卑斯丶
圣骑士
圣骑士
  • 最后登录2023-11-03
  • 发帖数59
  • 社区居民
  • 原创写手
阅读:4389回复:1

[vue]vue+echarts 地图加散点图

楼主#
更多 发布于:2020-02-21 11:46
在实际工作中经常会用到echarts,在echarts中使用地图也会占很大的比重,其中又以在地图中进行标点为重中之重。那么我现在就来说怎么在vue中使用echarts的地图加散点图进行绘制;
首先,我们要先安装echarts
npm install echarts -S
然后在main.js引用
import echarts from 'echarts'
Vue.prototype.$echarts = echarts
再然后就开始写代码了,我拿vue中的app.vue来写的。
<div id="myEchart" ref="myEchart" :style="{height:'800px',width:'100%'}"></div>
js中我们引入echarts和china.js
import echarts from "echarts";
import "./../node_modules/echarts/map/js/china.js";
这里引入地图的时候,我们可以直接在node_modules里找到这个china.js,当然我们也可以引入json来生成地图的,至于json去哪儿找,我是不会告诉你萌的(https://datav.aliyun.com/tools/atlas/
第一步,我们肯定是要先绘制地图出来,vue和在html中一样,我们首先要找到绘制地图的容器
let myChart = echarts.init(this.$refs.myEchart); //这里是为了获得容器所在位置
第二步就是要进行相关的配置了
myChart.setOption({
  // 进行相关配置
  backgroundColor: "#02AFDB",
  geo: {
    // 这个是重点配置区
    map: "china", // 表示中国地图
    roam: true,
    label: {
      normal: {
        show: true // 是否显示对应地名
      }
    },
    itemStyle: {
      // 定义样式
      normal: {
        // 普通状态下的样式
        areaColor: "#323c48",
        borderColor: "#111"
      },
      emphasis: {
        // 高亮状态下的样式
        areaColor: "#2a333d"
      }
    }
  },
});
配置成这样的时候我们的地图就能够显示出来了,接下来就要做散点图了
首先我们要加一个series,然后在里边进行配置,
series: [
          {
            name: "销量",
            type: "scatter",
            coordinateSystem: "geo", // 对应上方配置
            symbolSize: function(data) {
              console.log("data", data);
              return data[2] / 10;
            },
            data: that.myData
          }
        ]
这里的coordinateSystem要和上边的配套使用,因为上边地图配置是geo,所以这里要是geo才行。
然后这里的data我是写在vue组件的data里的。
data() {
  return {
    myData: [
      { name: "海门", value: [121.15, 31.89, 60] },
      { name: "鄂尔多斯", value: [109.781327, 39.608266, 180] },
      { name: "招远", value: [120.38, 37.35, 300] },
      { name: "舟山", value: [122.207216, 29.985295, 20] }
    ]
  };
},
这里边的value解释一下,数组的三个项分别是经纬度和值
再看上边的series里的配置,symbolSize是配置散点图图标大小的选项,有时候会让散点图的大小根据数据里的值来进行改变,所以这里进行了自定义,让散点图的图标大小根据数据里的值来进行设置的,让散点图图标大小等于数值除以10来获取。


接下来上完整的js代码
import echarts from "echarts";
import "./../node_modules/echarts/map/js/china.js";
export default {
  data() {
    return {
      myData: [
        { name: "海门", value: [121.15, 31.89, 60] },
        { name: "鄂尔多斯", value: [109.781327, 39.608266, 180] },
        { name: "招远", value: [120.38, 37.35, 300] },
        { name: "舟山", value: [122.207216, 29.985295, 20] }
      ]
    };
  },
  mounted() {
    this.chinaConfigure();
  },
  methods: {
    chinaConfigure() {
      var that = this;
      let myChart = echarts.init(this.$refs.myEchart); //这里是为了获得容器所在位置
      window.onresize = myChart.resize;
      myChart.setOption({
        // 进行相关配置
        backgroundColor: "#02AFDB",
        geo: {
          // 这个是重点配置区
          map: "china", // 表示中国地图
          roam: true,
          label: {
            normal: {
              show: true // 是否显示对应地名
            }
          },
          itemStyle: {
            // 定义样式
            normal: {
              // 普通状态下的样式
              areaColor: "#323c48",
              borderColor: "#111"
            },
            emphasis: {
              // 高亮状态下的样式
              areaColor: "#2a333d"
            }
          }
        },
        series: [
          {
            name: "销量",
            type: "scatter",
            coordinateSystem: "geo", // 对应上方配置
            symbolSize: function(data) {
              console.log("data", data);
              return data[2] / 10;
            },
            data: that.myData
          }
        ]
      });
    }
  }
};
阿尔卑斯丶
圣骑士
圣骑士
  • 最后登录2023-11-03
  • 发帖数59
  • 社区居民
  • 原创写手
沙发#
发布于:2020-02-21 12:22
这个demo的代码我放在github上了,地址是https://github.com/exwangwei/vue-echartsMap
一个很简单的demo,感兴趣的可以看看
游客


返回顶部

公众号

公众号