Echarts.js + Vue.js 实现 中国疫情地图(1)

代码——github上

项目展示: https://zuxian.github.io/chinamap/

中国疫情地图

Echarts.js官方文档!!!

数据来源——新浪接口–josnp获取

vue create chinamap

cd chinamap

npm install --save jsonp
npm install echarts --save

npm run serve

APP.vue

<template>
  <div id="app"> <ChinaMap msg="Welcome to Your Vue.js App"/> </div>
</template>

<script>
import ChinaMap from './components/mapchinacomp.vue'
export default {
  name: 'App',
  components: {  ChinaMap  }
}
</script>

mapchinacomp.vue

template
<template>
  <div class="hello" >
    <!-- 初始化echarts需要个 有宽高的 盒子 -->
    <div ref='mapbox' style='height:400px;width:600px'></div>
  </div>
</template>
vue 引进 echarts

vue 引进 echarts

  import echarts from 'echarts'
  import 'echarts/map/js/china.js'
  import jsonp from 'jsonp'
注册地图
  const option = {
    title:{
      text:"cookie_fzx",
      link:"https://blog.csdn.net/image_fzx",
      subtext:"疫情期间找工作---work hard!!!!",
      sublink:"https://blog.csdn.net/image_fzx"
    },
// ----------   series:地图数据可视化,添加data数据    ---------------------

    series:[{
      name:"确诊人数",
      type:'map', // 告诉echarts 要去渲染的是一个地图
      map:'china',// 告诉echarts  要去渲染中国地图
      label:{    // 控制对应地区的汉字      
        show:true,
        color:'#333',// 控制地区名的字体颜色---黑色,省名字
        fontSize:10
      },
      itemStyle:{      // 地图板块的颜色和边框---灰色,各个省界线
        areaColor:'#eee',
        // borderColor:'blue'
      },
      roam:true,
      zoom:1.2,// 控制地图的放大和缩小
      emphasis:{    // 控制鼠标滑过之后的背景色和字体颜色--白色       
        label:{
          color:'#fff',
          fontSize:12
        },
        itemStyle:{
          areaColor:'#83b5e7'   //  滑动到哪个地区就显示蓝色
        }
      },
      data:[]    // 用来展示后台给的数据的 {name:xx,value:xxx}
    }],

//-----------    visualMap:视觉映射,每个颜色代表什么含义   -----------------------------
    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}
      ],
      // align:'right',// 默认left
      // orient:'horizontal' 默认竖直
      // left right 这些属性控制 分段坐在的位置
      // showLabel:false
      // textStyle:{}
      inRange:{
        symbol:'rect',
        color:['#ffc0b1','#9c0505']   //   浅红~~深红色
      },
      itemWidth:20,
      itemHeight:10
    }],

//-------------------------------------------------------------------
    tooltip:{
      trigger:'item'
    },
    toolbox: {
      show: true,
      orient: 'vertical',
      left: 'right',
      top: 'center',
      feature: {
        // dataView: {readOnly: false},
        // restore: {},
        saveAsImage: {}
      }
    },
  };
导出 export default
  export default {
    name: 'ChinaMap',
    mounted() {
      this.getData();// 为什么不再created
      this.mychart = echarts.init(this.$refs.mapbox);
      this.mychart.setOption(option)
    },
    methods:{
      getData(){
        jsonp('https://interface.sina.cn/news/wap/fymap2020_data.d.json?_=1580892522427',{},(err,data)=>{
          if(!err){             // 代表请求数据成功
            console.log(data);
            let list = data.data.list.map(item=>({name:item.name,value:item.value}))
            console.log(list);
            option.series[0].data = list;
            this.mychart.setOption(option);
            // 这行代码能执行的前提是 DOM已经渲染完成,只有DOM渲染完成才能够执行 echarts初始化
          }
        })
      }
    }
  }
样式
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  h3 {
    margin: 40px 0 0;
  }
  ul {
    list-style-type: none;
    padding: 0;
  }
  li {
    display: inline-block;
    margin: 0 10px;
  }
  a {
    color: #42b983;
  }
</style>
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue.js中使用Node.js的API需要注意一些事项。由于Vue.js是在浏览器环境中运行的,而Node.js的API主要针对服务器端开发,所以直接在Vue.js中使用Node.js的API是不可行的。 如果你想在Vue.js中调用Node.js的API,一种常见的做法是通过后端服务器来实现。你可以在后端服务器中编写相应的接口,供Vue.js前端调用。以下是一个简单的示例: 1. 在后端服务器中,使用Node.js的Express框架创建一个API接口: ```javascript const express = require('express'); const app = express(); app.get('/api/data', (req, res) => { // 在这里可以调用Node.js的API进行一些操作 // 返回需要的数据给前端 res.json({ message: 'Hello from Node.js API!' }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. 在Vue.js中使用Axios或Fetch等HTTP库来调用后端服务器的API: ```javascript import axios from 'axios'; axios.get('/api/data') .then(response => { console.log(response.data.message); // 输出:Hello from Node.js API! }) .catch(error => { console.error(error); }); ``` 这样,当你在Vue.js中调用`axios.get('/api/data')`时,实际上是向后端服务器发送了一个HTTP请求,后端服务器再通过Node.js的API进行相应的操作,并将结果返回给Vue.js前端。 需要注意的是,你需要在后端服务器中安装和配置Node.js的相关模块和环境,并确保后端服务器正常运行。同时,你也可以根据具体需求,设计更复杂的API接口来满足前端的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值