vue中使用echarts中国地图

项目中需要在中国地图上显示各省数据,所以想到了echarts的map。

由于之前没用过,所以也是踩了一些坑。

最先遇到的是如何获取中国地图数据,echarts官网实例的数据是美国的,而在线生成地图数据的插件由于某种原因下线了,上线时间未知……

当时我就傻眼了,和产品经理说:“这个需求做不了……”,产品点点头,说:“你过来一下。”,我跑到了她的工位上,只见她拉开抽屉,里边躺着一把菜刀,我当时腿一哆嗦,“能做!!!”

挠着我为数不多的头发,开始了漫长的搜索之路。

“echarts中国地图数据” ——下载下来是乱码……

“echarts最新中国地图数据”——下载下来还是乱码……

好吧,我换了个思路。

“echarts中如何使用中国地图” 搜出一堆结果,发现这次搜索的结果很有用,某个答案上说在vue项目中,下载的echarts插件中自带中国地图数据,然后愉快的打开编辑器开始写bug。

果然不出所料,我写代码没有不出bug的,写好之后出现了 “this.chart.registerMap is not a function” 这个报错,仔细排查之后发现,registerMap方法只有echarts原型对象中才有,init后的对象中是没有的。

修复bug后拿给产品经理看,产品经理说我审美好差,为什么颜色这么丑,我听了这话当时就爆发了,“你要是嫌不好看!我就改一些好看的……”

下面贴代码

let mapData = {
            tooltip : {},
            visualMap: {
              left: 'right',
              min: 0,
              max: 999999,
              inRange: {
                color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
              },
              text:['High','Low'],           // 文本,默认为数值文本
              calculable: true
            },           
            series : [
              {
                name: self.pieName, // 默认名字,tooltip的title
                type: 'map',
                roam: true,
                map: 'china',// 这里要跟registerMap方法中第一个参数对应
                itemStyle:{
                  emphasis:{label:{show:true}}
                },
                // 文本位置修正
                textFixed: {
                  Alaska: [20, -20]
                },
                data: data,// 需要显示在地图上的数据 [{name:台湾,value:'是中国的'},{name:香港,value:'别搞事情'}]
              }
            ]
          }
import echarts from 'echarts'
import china from 'echarts/map/js/china.js'
echarts.registerMap('china', require('echarts/map/json/china.json'))



this.chart = echarts.init(document.getElementById(this.id),'light')   
this.chart.setOption(mapData)

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,你需要在 Vue 项目安装 echartsecharts-gl: ``` npm install echarts echarts-gl --save ``` 然后,在需要使用钻取地图的组件引入 echarts: ```javascript import echarts from 'echarts' import 'echarts-gl' ``` 接着,你可以使用以下代码来绘制钻取地图: ```vue <template> <div id="chart" style="width: 100%; height: 500px;"></div> </template> <script> import echarts from 'echarts' import 'echarts-gl' export default { data() { return { chart: null } }, mounted() { this.chart = echarts.init(document.getElementById('chart')) this.chart.on('click', this.handleChartClick) this.drawMap() }, methods: { drawMap() { const option = { series: [ { type: 'map3D', map: 'china', nameMap: { china: '中国' }, label: { show: true, textStyle: { color: '#fff' } }, itemStyle: { color: '#1E90FF', opacity: 0.7 }, emphasis: { label: { show: true }, itemStyle: { color: '#FFA500' } }, data: this.getData() } ] } this.chart.setOption(option) }, handleChartClick(params) { // 处理点击事件 console.log(params) }, getData() { // 返回地图数据 } } } </script> ``` 其,`drawMap` 方法用来绘制地图,`handleChartClick` 方法用来处理点击事件,`getData` 方法用来获取地图数据。 需要注意的是,钻取地图需要在 `series` 使用 `map3D` 类型,并且需要设置 `map` 属性为地图名称(如 `'china'`)。 当点击地图区域时,会触发 `handleChartClick` 方法,并且参数会包含点击区域的信息。你可以根据这些信息来实现钻取功能,例如重新加载新的地图数据并更新地图

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值