ChartMap.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div ref="chartsDOM" style="width: 1080px;height:960px;" />
  3. </template>
  4. <script>
  5. import * as echarts from 'echarts'
  6. import { getChartGeoJson } from '@/api/chart'
  7. // import chinaData from '@/assets/json/china_full.json'
  8. // import sichuanData from '@/assets/json/sichuan_level3.json'
  9. export default {
  10. name: 'ChartMap',
  11. data() {
  12. return {
  13. myChart: null
  14. }
  15. },
  16. mounted() {
  17. // 初始化统计图对象
  18. this.myChart = echarts.init(this.$refs['chartsDOM'])
  19. // this.initChart1()
  20. // this.initChart2()
  21. },
  22. created() {
  23. document.title = 'ChartMap'
  24. },
  25. methods: {
  26. initChart1() {
  27. // 显示 loading 动画
  28. this.myChart.showLoading()
  29. const areaCode = 0
  30. getChartGeoJson(areaCode).then(resp => {
  31. if (resp.code === 0) {
  32. var mapData1 = resp.data
  33. }
  34. })
  35. var mapName = 'sichuan'
  36. var mapData = {}
  37. // mapName = 'china'
  38. // mapData = chinaData
  39. var dataList = this.getDataList(mapData, 1000)
  40. var chartOption = this.getChartOption1(mapName, dataList)
  41. // 注册地图(地图数据来自本地或后端的 geojson 格式数据)
  42. echarts.registerMap(mapName, mapData)
  43. this.myChart.setOption(chartOption)
  44. // 得到数据并绘制地图后关闭 loading 动画
  45. this.myChart.hideLoading()
  46. },
  47. initChart2() {
  48. // 显示 loading 动画
  49. this.myChart.showLoading()
  50. var mapName1 = 'sichuan'
  51. var mapData1 = {}
  52. // mapData1 = sichuanData
  53. var dataList1 = this.getDataList(mapData1, 500000)
  54. var chartOption1 = this.getChartOption2(mapName1, dataList1)
  55. echarts.registerMap(mapName1, mapData1)
  56. this.myChart.setOption(chartOption1)
  57. // 得到数据并绘制地图后关闭 loading 动画
  58. this.myChart.hideLoading()
  59. },
  60. getDataList(mapData, base) {
  61. var dataList = []
  62. for (const item of mapData['features']) {
  63. var name = item['properties']['name']
  64. var value = this.randomData(base)
  65. dataList.push({ name: name, value: value })
  66. }
  67. return dataList
  68. },
  69. randomData(base) {
  70. // var base = 1000
  71. return Math.ceil(Math.random() * base)
  72. },
  73. getChartOption1(mapName, dataList) {
  74. return {
  75. backgroundColor: '#FFFFFF',
  76. title: {
  77. text: '全国数据',
  78. subtext: '各省市区显示',
  79. x: 'center'
  80. },
  81. tooltip: {
  82. trigger: 'item'
  83. },
  84. // 左侧小导航图标
  85. visualMap: {
  86. show: true,
  87. x: 'left',
  88. y: 'center',
  89. splitList: [
  90. { start: 800, end: 1000 },
  91. { start: 600, end: 800 },
  92. { start: 400, end: 600 },
  93. { start: 200, end: 400 },
  94. { start: 100, end: 200 },
  95. { start: 0, end: 100 }
  96. ],
  97. color: [
  98. '#5475f5',
  99. '#9feaa5',
  100. '#85daef',
  101. '#74e2ca',
  102. '#e6ac53',
  103. '#9fb5ea'
  104. ]
  105. },
  106. // 配置属性
  107. series: [{
  108. name: '全国数据',
  109. type: 'map',
  110. map: mapName,
  111. roam: true,
  112. label: {
  113. show: false
  114. },
  115. data: dataList // 数据
  116. }]
  117. }
  118. },
  119. getChartOption2(mapName, dataList) {
  120. return {
  121. visualMap: {
  122. min: 0,
  123. max: 300000,
  124. realtime: false,
  125. calculable: true,
  126. inRange: {
  127. color: ['lightskyblue', 'yellow', 'orangered']
  128. }
  129. },
  130. title: {
  131. text: '四川各市统计图'
  132. },
  133. tooltip: {},
  134. series: [
  135. {
  136. name: '四川地图',
  137. type: 'map',
  138. map: mapName, // 这个是上面注册时的名字哦,registerMap('这个名字保持一致')
  139. roam: true, // 可放大缩小拖拽
  140. label: {
  141. show: true // 地图上显示地区名字
  142. },
  143. data: dataList
  144. }
  145. ]
  146. }
  147. },
  148. onRefresh() {
  149. this.initChart1()
  150. }
  151. }
  152. }
  153. </script>
  154. <style>
  155. </style>