vue2项目中封装echarts地图比较优雅的方式
以前写过 vue项目中封装echarts的比较优雅的方式,大屏可视化里面,除了数据图表很常用,显示省市地图区域也是很常用到的,这是姐妹篇。
区域地图选区域时,需要弹窗展示数据,样式是各种各样的,各种排列的数据、图文混搭、视频……这里除了封装echarts区域地图模块,还介绍了下自定义弹窗的实现、自定义弹窗动态加载接口数据的方式
能学到的知识
- 1、echarts地图模块封装,可复用
- 2、echarts地图自定义弹窗(显示自定义样式、自定义数据、自定义图片),其它图表的自定义弹窗可参考。
- 3、echarts地图自定义弹窗动态展示接口数据
- 4、基于姐姐篇实现的,这个地图模块也是自适应的
- 5、基于
vue2
、vue cli3
、echarts 5
效果图
先上个效果图吧,说明下实现的效果。
- 1、以广州区域地图为例
- 2、自定义弹窗,显示选中地区的名称、区号,弹窗加了个小图片
- 3、基本上图片、视频什么的,都可以在自定义弹窗上显示,这里只展示下自定义弹窗加图片的方式,视频同理的,不介绍了,有兴趣自己随便试试就好
- 4、弹窗数据是从模拟接口取的
注意
1、vue中echarts 5.x
以下版本和5.x
以上版本引入的区别
5.x
以下版本
1 |
|
5.x
以上版本
1 |
|
2、记得在vue.config.js
中开启运行时编译功能
1 |
|
实现
数据准备
1 |
|
- 1、
4401.json
是广州区域的geojson
数据,用来给echarts
显示广州的区域地图 - 2、
mapdata.json
是模拟接口请求的假数据,自己随便自定义了,在获取数据后,看情况处理下传到封装好的echarts地图模块就行,这里模拟接口请求的知识可参考这里: vue本地模拟服务器请求mock数据 - 3、
map-ic.png
地图自定义弹窗用到的图片
echarts地图模块封装
1 |
|
封装的地图模块,具体代码如下:
1 |
|
自定义弹窗主要是在tooltip
的formatter
里面实现,自定义好html
弹窗,把params
里要显示的数据显示到对应的地方就OK了。
个人喜欢直接纯html
实现好设计给的弹窗样式,然后直接复制到formatter
里面。每次遇到不同的设计,就修改下formatter
里面的html
和匹配下要显示的数据就行了。这里可以进一步封装的,有兴趣的可以试试。
页面调用
1 |
|
- 1、
:chart-option="mapOpt"
这个是给封装的echarts
地图模块的传参,接口数据要经过处理,具体看下一节 - 2、
@click="handleMapClick"
这里是点击地图时,对应区域的数据,用于有下一步的操作,例如地图下钻
接口数据处理
1 |
|
这里对地图geojson
数据和接口返回数据进行匹配处理,达到弹窗数据是对应地区数据的效果。
地图geojson
数据是必有adcode
字段的,所以接口数据mapPopData
最好也是加上此字段,用来匹配。
上面代码里的hoverObj
是匹配好的每个区域的数据,最终形成数组data
,通过以下代码给封装的echarts
模块传参
1 |
|
具体代码可以参考echartMapTest
文件夹里面的index.js
文件
代码总览
涉及的文件如下(具体参考代码
):
1 |
|
代码
按代码总览
的目录去代码里找着看就行了。
总结
以上,就是对echarts
地图模块的封装,还有自定义弹窗的实现。使用和复用都比较方便了。
最近才发现 www.makeapie.com 停服了,挺好用的东西来的,感谢这么多年的奉献。
有需求的可转移到 PPChart,算是一个替代品了
参考资料
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!