vue+echarts全国疫情地图

相信年底疫情的爆发一直牵动着大家的心,虽然现在大部分地区都已经复工了,但大家还是要注意平时的防护工作。我这边已经复工2周了,可家里还有个室友在家办公,想想还是有点羡慕。

回到主题,今天特地做了个全国疫情图:

首先用vue-cli创建项目,然后还需要安装echarts和jsonp这2个包。(因为数据是新浪的接口,用到的是jsonp的结构,另外用到eslint的注意代码规范哦~~)

我用到的vue还是2.0+版本,直接安装

npm install echarts jsonp

我们直接去hoverworld修改内容

<template>
  <div class="hello">
    <div ref="mapbox" style="width:800px;height:600px;margin:0 auto"></div>
    <!-- 初始化echarts需要有个宽高的盒子 -->
  </div>
</template>

<script>
import echarts from 'echarts'
import 'echarts/map/js/china.js'
import jsonp from 'jsonp'
const option = {
  title: {
    // 标题内容
    text: '全国疫情图',
    link: 'https://baidu.com',
    subtext: '123456',
    sublink: 'https://baidu.com'
  },
  series: [{
    name: '确诊人数',
    type: 'map',
    // 告诉echarts渲染一个地图
    map: 'china',
    // 告诉echarts渲染中国地图
    label: {
      // 设置地区汉字
      show: true,
      color: '#333',
      fontSize: 10
    },
    itemStyle: {
      // 地图区域样式
      areaColor: '#eee'
    },
    roam: true,
    // 鼠标滚轮效果
    zoom: 1.2,
    // 地图放大缩小
    emphasis: {
      // 鼠标经过地图和字体样式
      label: {
        color: '#fff',
        fontSize: 12
      },
      itemStyle: {
        areaColor: '#ccc'
      }
    },
    data: []
    // 展示后台给的数据,必须格式(name:xxx;value:xxx)
  }],
  visualMap: [{
    // 区域显示颜色
    type: 'piecewise',
    show: true,
    // splitNumber: 4
    pieces: [
      {min: 10000},
      {min: 1000, max: 9999},
      {min: 100, max: 999},
      {min: 10, max: 99},
      {min: 1, max: 9},
      {max: 0}
    ],
    inRange: {
      // 区域图标样式
      symbol: 'rect',
      color: ['#FFFFFF', '#FFAA85', '#FF7B69', '#CC2929', '#8C0D0D', '#660208']
    }
  }],
  tooltip: {
    // 鼠标放上去显示内容
    trigger: 'item'
  },
  toolbox: {
    // 下载
    show: true,
    orient: 'vertical',
    left: 'right',
    top: 'center',
    feature: {
      dataView: {readyOnly: false},
      restore: {},
      saveAsImage: {}
    }
  }
}

export default {
  name: 'HelloWorld',
  mounted () {
    this.getData()
    this.mycharts = echarts.init(this.$refs.mapbox)
    // 初始化echarts
    this.mycharts.setOption(option)
  },
  methods: {
    getData () {
      jsonp('https://interface.sina.cn/news/wap/fymap2020_data.d.jsonp?_=1580892522427', {}, (err, data) => {
        if (!err) {
          console.log(data)
          let list = data.data.list.map(item => ({name: item.name, value: item.value}))
          option.series[0].data = list
          this.mycharts.setOption(option)
          // echarts初始化的前提是dom渲染完成
        }
      })
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
  font-weight: normal;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

到这就好啦!!!新的一年

大家 

猜你喜欢

转载自www.cnblogs.com/wangxiaomo/p/12433305.html