vue中使用ECharts实现中国地图配置详解(配官方配置地址)

前言:

1、实现自定义左下角的视觉映射组件(包括自定义颜色、文字、图元大小)
2、实现自定义悬浮提示框
如下图所示:
在这里插入图片描述

实现步骤:
一、在vue中安装echarts

1、npm install echarts

二、在vue组件中使用echarts

1、在组件中先引入echarts
import echarts from 'echarts' // 引入echarts中国地图数据
2、在组件中引入中国地图数据
require('echarts/map/js/china')
ps:地图类的echarts实现是需要额外引入地图数据了。
见官网:https://echarts.baidu.com/option.html#geo.map

3、在组件页面内定一个标签来渲染地图

<div id="china_map" style='width:600px;height:400px;'> </div>

4、初始化 echarts 实例和指定配置参数
我一般是在mounted生命周期函数中进行初始化地图表格数据的。

mounted () {
  // 初始化echarts实例
  this.chinachart = echarts.init(document.getElementById('china_map'))
  // 进行相关配置
  this.chartOption = { 
    tooltip: { // 鼠标移到图里面的浮动提示框
     // formatter详细配置: https://echarts.baidu.com/option.html#tooltip.formatter
      formatter (params, ticket, callback) { 
        // params.data 就是series配置项中的data数据遍历
        let localValue,
          perf,
          downloadSpeep,
          usability,
          point
        if (params.data) {
          localValue = params.data.value
          perf = params.data.perf
          downloadSpeep = params.data.downloadSpeep
          usability = params.data.usability
          point = params.data.point
        } else { // 为了防止没有定义数据的时候报错写的
          localValue = 0
          perf = 0
          downloadSpeep = 0
          usability = 0
          point = 0
        }
        let htmlStr = `
          <div style='font-size:18px;'> ${params.name}</div>
          <p style='text-align:left;margin-top:-10px;'>
	          区域对应数据value:${localValue}<br/>
	          性能perf:${perf}<br/>
	          下载速度downloadSpeep:${downloadSpeep}<br/>
	          可用性usability:${usability}<br/>
	          监测点数point:${point}<br/>
          </p>
        `
        return htmlStr
      }
      // backgroundColor:"#ff7f50",//提示标签背景颜色
      // textStyle:{color:"#fff"} //提示标签字体颜色
    }, 
    // visualMap的详细配置解析:https://echarts.baidu.com/option.html#visualMap
    visualMap: { // 左下角的颜色区域
      type: 'piecewise', // 定义为分段型 visualMap
      min: 0,
      max: 1000,
      itemWidth: 40,
      bottom: 60,
      left: 20,
      pieces: [ // 自定义『分段式视觉映射组件(visualMapPiecewise)』的每一段的范围,以及每一段的文字,以及每一段的特别的样式
        {gt: 900, lte: 1000, label: '非常好', color: '#6ad86e'}, // (900, 1000]
        {gt: 500, lte: 900, label: '正常', color: '#9adcfa'}, // (500, 900]
        {gt: 310, lte: 500, label: '警告', color: '#ffeb3b'}, // (310, 500]
        {gt: 200, lte: 300, label: '较差', color: '#ff9800'}, // (200, 300]
        {gt: 10, lte: 200, label: '非常差', color: 'orangered'}, // (10, 200]
        {value: 0, label: '无数据', color: '#999'} // [0]
      ]
    },
    // geo配置详解: https://echarts.baidu.com/option.html#geo
    geo: { // 地理坐标系组件用于地图的绘制
      map: 'china', // 表示中国地图
      // roam: true, // 是否开启鼠标缩放和平移漫游
      zoom: 1.2, // 当前视角的缩放比例(地图的放大比例)
      label: {
        show: true
      },
      itemStyle: { // 地图区域的多边形 图形样式。
        borderColor: 'rgba(0, 0, 0, 0.2)',
        emphasis: { // 高亮状态下的多边形和标签样式
          shadowBlur: 20,
          shadowColor: 'rgba(0, 0, 0, 0.5)'
        }
      }
    },
    series: [
      {
        name: '', // 浮动框的标题(上面的formatter自定义了提示框数据,所以这里可不写)
        type: 'map',
        geoIndex: 0,
        label: {
          show: true
        },
        // 这是需要配置地图上的某个地区的数据,根据后台的返回的数据进行拼接(下面是我定义的假数据)
        data: [{
          'name': '北京',
          'value': 599,
          'perf': '0.501s', // 性能
          'downloadSpeep': '1.221MB/s', // 下载速度
          'usability': '100%', // 可用性
          'point': '250' // 监测点
        }, {
          'name': '上海',
          'value': 142
        }, {
          'name': '黑龙江',
          'value': 44
        }, {
          'name': '新疆',
          'value': 999,
          'perf': '0.501s', // 性能
          'downloadSpeep': '1.221MB/s', // 下载速度
          'usability': '100%', // 可用性
          'point': '250' // 监测点
        }, {
          'name': '深圳',
          'value': 92
        }, {
          'name': '湖北',
          'value': 810
        }, {
          'name': '四川',
          'value': 453
        }]
      }
    ]
  }
  // 使用刚指定的配置项和数据显示地图数据
  this.chinachart.setOption(this.chartOption)

}

注意:
我在跟后台对接的时候,后台返回的数据有些是和原配置的属性名不一样的,导致数据无法渲染,所以我经过测试叫后台把属性名改成成和echarts默认属性名一样后就能正常渲染数据了(如果地图不能正常渲染那么可以尝试对照下面的进行排查)。
(比如:
series配置项中的data中的数据,name如果想要能正常匹配上地图上的地区名,那么就最好使用name属性名;
visualMap配置项中的pieces中的value值,如果只需要相等的情况渲染对应数值区域的颜色,那么就需要规定属性名为value,然后series配置项中的data中的数据也是要定义数据属性名为value

  • 29
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
Vue使用ECharts实现地图,首先需要引入ECharts图表库。可以通过以下代码将ECharts引入Vue项目: ```javascript // 引入ECharts图表库 import echarts from 'echarts' Vue.prototype.$echarts = echarts ``` 接下来,需要在Vue组件创建一个地图容器,可以使用`<div>`标签,并设置一个唯一的`id`属性,以及设置容器的高度。例如: ```html <div id="myChart" style="height: 600px;"></div> ``` 然后,在Vue组件的`mounted`生命周期钩子函数,可以通过`this.$echarts.init()`方法初始化地图,并通过`setOption()`方法设置地图配置项和数据。例如: ```javascript mounted() { // 初始化地图容器 const myChart = this.$echarts.init(document.getElementById('myChart')) // 设置地图配置项和数据 const option = { // 地图配置项 // ... // 地图的数据 // ... } // 渲染地图 myChart.setOption(option) } ``` 以上代码,需要根据具体的需求设置地图配置项和数据。可以参考ECharts官方文档提供的示例和API进行配置和数据的设置。 请注意,以上代码只是一个简单的示例,具体的实现方式可能会根据项目的需求和使用ECharts版本而有所不同。建议参考ECharts官方文档和相关教程进行更详细的学习和实践。 #### 引用[.reference_title] - *1* [vue使用echarts,echarts-map:echarts地图](https://blog.csdn.net/weixin_45302156/article/details/120545621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Vue+ECharts实现可视化地图](https://blog.csdn.net/u011924274/article/details/124941788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值