vue项目引用echarts 中国地图、省、市下钻实现

功能描述:中国地图下钻-省-市

逻辑原理: 初始化中国地图,利用地图点击事件设置map配置到省或者市

难点:源码没有市级别的json,增加了下钻第三级的难度

解决方式:下载json资源,引入并重新注册地图

版本:4.2.0-rc.2

备注:尚未了解新版本是否含市级别的json文件

l前戏了解:

源码地图了解 ===>路径:echarts->map-> js/json 文件夹

中国地图:import 'echarts/map/js/china' 

广东地图:  import 'echarts/map/js/province/guangdong'
(为什么是这个路径,你尝试打开源码就明白了 )
 
||正题切入:
开始显示地图 设置series的map:‘china’,具体实现地图的源码可以参考我的另一篇文章https://www.cnblogs.com/yflbk-2016/p/13596124.html
             

 

点击到省级别实现原理很简单的,series的map:'广东' 即可,注意不是英文'guangdong',原因可以看到源码js文件。注册写着中文
        

效果图

           

 

代码切换实现

// name 全局变量,保存当前地图的名称
var name = 'china'

// 点击事件
myChart.on('click', (params) => {
          name = params.name 
          this.render() // 重新渲染地图的方法
        })
// option设置
 series:的 map: name
View Code

 

|||难点:点击到市级别,源码不支持了

源码中也发现除了到省就没有市等更细级别的json文件了,那只好网上资源下载,参考链接http://datav.aliyun.com/tools/atlas/#&lat=22.890161256069373&lng=113.42393600000004&zoom=7

 

1.搜索功能

2.含有子区域的json文件路径,可以直接打开查看内容复制粘贴,那就不需要下载;说明:第一个路径没有full结尾的就是不含子区域的路径,不含子区域指就是中间没有界限,看不到具体内容,就一个壳(一般没有人会用个轮廓吧)

3.直接把json文件下载

 

 

 下载好的文件放到静态资源里(湛江市为例)

    

 

 

在上一段代码on事件中间加代码,利用axios请求静态资源获取到json

 

 // 代码内容

if (params.name === '湛江市') {
            axios.get('./static/440800.json').then(res => {
              const getJson = res.data
              echarts.registerMap(params.name, getJson)
         this.resizeChart() // resize 图形功能方法
            })
          }

点击下钻效果

      

 总结:以上设置即可实现下钻效果,暂时无测试数据,功能细节也不算很全,比如添加返回等功能,后期有空补上~

 

======添加返回上一级功能

初始化:上面提到的字符串name变量改成数组变量  var nameArr = ['china'],默认含有中国地图,series的map或geo的map更改为map:nameArr[nameArr.length - 1]

下钻:每次点击添加 nameArr.push(params.name)

返回:nameArr.pop()

已测

 ending....

 

posted @ 2020-09-03 17:18  树叶铃铛  阅读(5752)  评论(2编辑  收藏  举报