企业管理系统定制开发Vue+ECharts实现可视化地图

Apache ECharts

一个基于 JavaScript 企业管理系统定制开发的开源可视化图表库,企业管理系统定制开发提供了常规的、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

本示例,我们使用Vue+ECharts实现可视化地图的制作。

第一步:从 npm 获取Apache ECharts

npm install echarts --save

第二步:获取离线地图json包

这里推荐使用阿里云提供的数据可视化平台

 点击河北省下钻区域,再点击石家庄市下钻区域,获取石家庄市区域地图json格式数据,点击右侧“其它类型”下载json文件,将下载的json文件拷贝到工程目录下。

 第三步:全局或局域引入ECharts

在main.js中引入ECharts

  1. import * as echarts from 'echarts';
  2. Vue.prototype.$echarts = echarts;

第四步:在地图使用vue页进行编写

1.引入石家庄市区域地图json

import sjz from '@/json/sjzarea.json'

2.创建地图容器

  1. <div class="row">
  2. <div class="col-sm-1 col-md-12 col-lg-12" id="myChart" ref="myChart" style="height: 600px;"></div>
  3. </div>

设置容器的id、ref、宽度高度等属性

3. 设置(获取)地图series数据

  1. data () {
  2. return {
  3. mapdata: []
  4. }
  5. },

例如:获取基地数量并写入mapdata

  1. // 获取记录数
  2. getCount(name,id) {
  3. var that = this
  4. var count = 0
  5. axios.get(this.global.apiUrl + '/web/article/list?page=1&limit=100&idChannel=' + id + '&sort=id&order=desc').then(function (res) {
  6. if (res.data.success && res.data.data.records.length > 0) {
  7. count = res.data.data.total
  8. }
  9. that.mapdata.push({
  10. 'name': name,
  11. 'id': id,
  12. 'value': count
  13. })
  14. })
  15. },

4. 初始化地图

  1. // 注册石家庄地图
  2. this.$echarts.registerMap('sjz', sjz)
  3. // 初始化
  4. let myChart = this.$echarts.init(this.$refs.myChart)
  5. // option配置
  6. let option = {
  7. backgroundColor: 'transparent',
  8. title: {
  9. text: '示范基地数字地图',
  10. // subtext: '',
  11. // sublink: '',
  12. left: 'center',
  13. textStyle: {
  14. color: '#000'
  15. }
  16. },
  17. tooltip: {
  18. trigger: 'item'
  19. },
  20. visualMap: {
  21. min: 0,
  22. max: 20,
  23. text: ['High', 'Low'],
  24. realtime: false,
  25. calculable: true,
  26. inRange: {
  27. color: ['lightskyblue', 'yellow', 'orangered']
  28. }
  29. },
  30. series: [
  31. {
  32. name: '示范基地数',
  33. type: 'map',
  34. map: 'sjz',
  35. geoIndx: 0,
  36. aspectScale: 0.75,
  37. showLegendSymbol: false,
  38. // itemStyle: {
  39. // // 普通样式。
  40. // normal: {
  41. // // 点的颜色。
  42. // color: 'red'
  43. // },
  44. // // 高亮样式。
  45. // emphasis: {
  46. // // 高亮时点的颜色。
  47. // color: 'blue'
  48. // }
  49. // },
  50. label: {
  51. normal: {
  52. show: true
  53. },
  54. emphasis: {
  55. show: false,
  56. textStyle: {
  57. color: '#fff'
  58. }
  59. }
  60. },
  61. roam: true,
  62. animation: false,
  63. data: this.mapdata
  64. }
  65. ]
  66. }
  67. myChart.setOption(option)
  68. window.addEventListener('resize', function () {
  69. myChart.resize()
  70. })

5.设计地图点击触发事件

  1. var that = this
  2. myChart.on('click', function (data) {
  3. var name = data.name
  4. var id = 0
  5. for (var i in that.mapdata) {
  6. if (that.mapdata[i].name == name) {
  7. id = that.mapdata[i].id
  8. }
  9. }
  10. // console.log(id)
  11. if(id) {
  12. var path = '/article/category/' + id
  13. that.$router.push({ path: path })
  14. }
  15. })

6.调用地图初始化

  1. created () {
  2. this.$nextTick(() => {
  3. this.initCharts();
  4. })
  5. },

或可以根据需求使用进度条进行调用地图初始化

  1. mounted () {
  2. var s=0
  3. var v=10
  4. var sobj = setInterval(function(){
  5. s+=v;
  6. if(s>=100){
  7. clearInterval(sobj)
  8. that.initCharts()
  9. }
  10. $('.progress-bar').html(s+'%').css({'width':s+'%'})
  11. },100);
  12. }

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发