vue+vuex+axios+echarts画一个动态更新的中国地图的方法

前端之家收集整理的这篇文章主要介绍了vue+vuex+axios+echarts画一个动态更新的中国地图的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文介绍了vue+vuex+axios+echarts画一个动态更新的中国地图的方法分享给大家,具体如下:

一. 生成项目及安装插件

二. 项目结构

文件 └── modules └── ChinaMap.js # 中国地图Vuex模块

三. 引入中国地图并绘制基本的图表

1.按需求引入与中国地图相关的Echarts图表和组件。

提示框 require('echarts/lib/component/tooltip') // 地图geo require('echarts/lib/component/geo')

2.引入中国地图JS文件,会自动注册地图;也可以通过axios方式引入json文件,需要手动注册echarts.registerMap('china',chinaJson.data)。

文件 require('echarts/map/js/china')

3.准备一个有固定宽高的DOM容器并在mounted里面初始化一个echarts实例。

DOM容器

初始化echarts实例

4.设置初始化的空白地图,这里需要设置很多echarts参数,参考ECharts配置项手册

标题 title: { text: '中国地图闪闪发光',left: 'center',textStyle: { color: '#fff' } },// 地图上圆点的提示 tooltip: { trigger: 'item',formatter: function (params) { return params.name + ' : ' + params.value[2] } },// 图例按钮 点击可选择哪些不显示 legend: { orient: 'vertical',left: 'left',top: 'bottom',data: ['地区热度','top5'],// 地理坐标系组件 geo: { map: 'china',label: { // true会显示城市名 emphasis: { show: false } },itemStyle: { // 地图背景色 normal: { areaColor: '#465471',borderColor: '#282F3C' },// 悬浮时 emphasis: { areaColor: '#8796B4' } } },// 系列列表 series: [ { name: '地区热度',// 表的类型 这里是散点 type: 'scatter',// 使用地理坐标系,通过 geoIndex 指定相应的地理坐标系组件 coordinateSystem: 'geo',data: [],// 标记的大小 symbolSize: 12,// 鼠标悬浮的时候在圆点上显示数值 label: { normal: { show: false },emphasis: { show: false } },itemStyle: { normal: { color: '#ddb926' },// 鼠标悬浮的时候圆点样式变化 emphasis: { borderColor: '#fff',borderWidth: 1 } } },{ name: 'top5',// 表的类型 这里是散点 type: 'effectScatter',showEffectOn: 'render',rippleEffect: { brushType: 'stroke' },hoverAnimation: true,label: { normal: { show: false } },itemStyle: { normal: { color: '#f4e925',shadowBlur: 10,shadowColor: '#333' } },zlevel: 1 } ] })

四. 配置Vuex管理和分发数据

1.在ChinaMap.js中引入vuex和axios。

2.设置必要的变量。

3.在actions中抓取后台数据并更新地图。

{ let data = res.data let paleData = ((state,data) => { let arr = [] let len = data.length while (len--) { let geoCoord = state.geoCoordMap[data[len].name] if (geoCoord) { arr.push({ name: data[len].name,value: geoCoord.concat(data[len].value) }) } } return arr })(state,data) let lightData = paleData.sort((a,b) => { return b.value - a.value }).slice(0,state.showCityNumber) chartsObj.setOption({ series: [ { name: '地区热度',data: paleData },{ name: 'top5',data: lightData } ] }) } ) } }

此时npm run dev已经可以看到中国地图上闪闪的黄色小点点。

若想改变她使动态展示,可以在index.vue中mounted下面加上

{ this.$store.dispatch('fetchHeatChinaRealData',chinaMap) },1000)

在ChinaMap.js中actions的mutations中fetchHeatChinaRealData修改

{ return b.value - a.value }).slice(0 + state.showCount,state.showCityNumber + state.showCount) if (state.isLoading) { chartsObj.hideLoading() commit('closeLoading') }

五. 其它

1.别忘了在main.js里面引入Vuex。

let ChinaMap = new Vue({
el: '#app',store,template: '',components: {Index}
})

Vue.use(ChinaMap)

2.案例代码

GitHub

3.效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

猜你在找的Vue相关文章