vue中echarts下钻+散点 大屏 数据可视化

链接:https://pan.baidu.com/s/1a9TbR_SaLAuH4S8AXhUNnw

提取码:ay7s


```

<template>

  <div class="DataView" style='width:800px;height:500px;'>

   <div ref='DataMap' class="main">

    </div>

  </div>

</template>

<script>

import Vue from 'vue'

import 'echarts/map/js/china'

import echarts from 'echarts'

import axios from 'axios'

import VueAxios from 'vue-axios'

Vue.use(VueAxios,axios);

export default {

  name: 'DataMap',

  data() {

    return {

    }

  },

  mounted() {

    this.$nextTick(()=>{

      this.showBar();

    })

  },

  updated(){

  },

  computed: {

  },

  watch: {

  },

  methods: {

    showBar(){

      // 基于准备好的dom,初始化echarts实例

      var myChart  = echarts.init(this.$refs.DataMap);

      //各省份的地图json文件

        var provinces = {

            '上海': 'json/province/shanghai.json',

            '山西': 'json/province/shanxi.json',

            '河北': 'json/province/hebei.json',

            '内蒙古': 'json/province/neimenggu.json',

            '辽宁': 'json/province/liaoning.json',

            '吉林': 'json/province/jilin.json',

            '黑龙江': 'json/province/heilongjiang.json',

            '江苏': 'json/province/jiangsu.json',

            '浙江': 'json/province/zhejiang.json',

            '安徽': 'json/province/anhui.json',

            '福建': 'json/province/fujian.json',

            '江西': 'json/province/jiangxi.json',

            '山东': 'json/province/shandong.json',

            '河南': 'json/province/henan.json',

            '湖北': 'json/province/hubei.json',

            '湖南': 'json/province/hunan.json',

            '广东': 'json/province/guangdong.json',

            '广西': 'json/province/guangxi.json',

            '海南': 'json/province/hainan.json',

            '四川': 'json/province/sichuan.json',

            '贵州': 'json/province/guizhou.json',

            '云南': 'json/province/yunnan.json',

            '西藏': 'json/province/xizang.json',

            '陕西': 'json/province/shanxi1.json',

            '甘肃': 'json/province/gansu.json',

            '青海': 'json/province/qinghai.json',

            '宁夏': 'json/province/ningxia.json',

            '新疆': 'json/province/xinjiang.json',

            '北京': 'json/province/beijing.json',

            '天津': 'json/province/tianjin.json',

            '重庆': 'json/province/chongqing.json',

            '香港': 'json/province/xianggang.json',

            '澳门': 'json/province/aomen.json'

        };


        //各省份的数据

        var allData = [{

            name: '北京'

        }, {

            name: '天津'

        }, {

            name: '上海'

        }, {

            name: '重庆'

        }, {

            name: '河北'

        }, {

            name: '河南'

        }, {

            name: '云南'

        }, {

            name: '辽宁'

        }, {

            name: '黑龙江'

        }, {

            name: '湖南'

        }, {

            name: '安徽'

        }, {

            name: '山东'

        }, {

            name: '新疆'

        }, {

            name: '江苏'

        }, {

            name: '浙江'

        }, {

            name: '江西'

        }, {

            name: '湖北'

        }, {

            name: '广西'

        }, {

            name: '甘肃'

        }, {

            name: '山西'

        }, {

            name: '内蒙古'

        }, {

            name: '陕西'

        }, {

            name: '吉林'

        }, {

            name: '福建'

        }, {

            name: '贵州'

        }, {

            name: '广东'

        }, {

            name: '青海'

        }, {

            name: '西藏'

        }, {

            name: '四川'

        }, {

            name: '宁夏'

        }, {

            name: '海南'

        }, {

            name: '台湾'

        }, {

            name: '香港'

        }, {

            name: '澳门'

        }];

        //需要涟漪效果的地方

        var GZData = [

            [{name: '北京',value:96}],

            [{name: '黑龙江',value:90}],

            [{name: '内蒙古',value:66}],

            [{name: '西藏',value:70}],

            [{name: '陕西',value:94}],

            [{name: '广西',value:79}],

            [{name: '新疆',value:51}],

            [{name: '青海',value:67}],

            [{name: '海南',value:30},],

            [{name: '云南',value:56}],

            [{name: '四川',value:96},],

            [{name: '福建',value:74}],

        //  [{name: '宁夏',value:47}],

        //  [{name: '西藏',value:19}],   

        //  [{name: '黑龙江',value:33}],

        //  [{name: '新疆',value:28}],

        //  [{name: '天津',value:11}],

        //  [{name: '上海',value:13}],

        //  [{name: '重庆',value:9}],

        //  [{name: '辽宁',value:46}],   

        //  [{name: '安徽',value:88}],

        //  [{name: '山东',value:82}],

        //  [{name: '江苏',value:38}],

        //  [{name: '甘肃',value:23}],

        //  [{name: '山西',value:36}],

        //  [{name: '内蒙古',value:29}],

        //  [{name: '陕西',value:45}],

        //  [{name: '吉林',value:44}],

        //  [{name: '广东',value:59}],

        //  [{name: '青海',value:23}],

        //  [{name: '台湾',value:26}],

        //  [{name: '香港',value:27}],

        //  [{name: '澳门',value:13}]


        ];

        //涟漪特效位置

        var geoCoordMap = {

            '广州': [113.5107,23.2196],

            '北京': [116.4551,40.2539],               

            '天津': [117.4219,39.4189],

            '上海': [121.4648,31.2891],

            '重庆': [106.557165,29.563206],

            '河北': [114.508958,38.066606],

            '河南': [113.673367,34.748062],

            '云南': [102.721896,25.047632],

            '辽宁': [123.445621,41.806698],

            '黑龙江': [126.655705,45.759581],

            '湖南': [112.950888,28.229114],

            '安徽': [117.300842,31.887672],

            '山东': [117.029895,36.677424],

            '新疆': [87.616327,43.800508],

            '江苏': [118.814345,32.061445],

            '浙江': [120.16991,30.272236],

            '江西': [115.904962,28.674132],

            '湖北': [114.290138,30.595623],

            '广西': [108.381781,22.815042],

            '甘肃': [103.851217,36.061978],

            '山西': [112.57197,37.879532],

            '内蒙古': [112.57197,37.879532],

            '陕西': [108.960062,34.285251],

            '吉林': [126.572746,43.86785],

            '福建': [119.319713,26.072564],

            '贵州': [106.557165,29.563206],

            '广东': [113.238778,23.161621],

            '青海': [101.787147,36.621234],

            '西藏': [91.154492,29.665953],

            '四川': [104.082256,30.652565],

            '宁夏': [106.234805,38.487468],

            '海南': [109.910757,19.108187],

            '台湾': [121.098613,23.778734],

            '香港': [114.168545,22.36641],

            '澳门': [113.549978,22.1943]

        };

        //不同省份的颜色

        // for (var i = 0; i < allData.length; i++) {

        //    allData[i].value = Math.round(Math.random() * 100);

        // }

        loadMap('zhongguo.json', 'china');//初始化全国地图

        var timeFn = null;

        //单击切换到省级地图,当mapCode有值,说明可以切换到下级地图

        myChart.on('click', function(params) {

            // 涟漪数据清空,避免市级闪烁重复

            series2[0].data=[]

            clearTimeout(timeFn);

            //由于单击事件和双击事件冲突,故单击的响应事件延迟250毫秒执行

            timeFn = setTimeout(function() {

                var name = params.name; //地区name

                var mapCode = provinces[name]; //地区的json数据

                if (!mapCode) {

                    alert('双击返回上级地图');

                    return;

                }

                loadMap(mapCode, name);

            }, 250);

        });

        // 绑定双击事件,返回全国地图

        myChart.on('dblclick', function(params) { 

            series2[0].data = JSON.parse(sessionStorage.getItem("series2"));

            //当双击事件发生时,清除单击事件,仅响应双击事件

            clearTimeout(timeFn);

            //返回全国地图

            loadMap('json/china.json', 'china');

        });

        //涟漪效果

        var series2 = [];

            [GZData].forEach(function (item, i) {

                series2.push(

                {

                    type: 'effectScatter',

                    coordinateSystem: 'geo',

                    rippleEffect: { //涟漪特效相关配置

                        period:'4', //动画的时间

                        scale:'8', //动画中波纹的最大缩放比例

                        brushType: 'stroke'

                    },

                    label: { //图形上的城市文本标签

                        normal: {

                            show: false,

                            position: 'right',

                            formatter: '{b}',

                            textStyle:{

                                color:'#fff',

                                fontStyle: 'normal',

                                fontFamily: 'arial',

                                fontSize: 12,

                            }

                        }

                    },

                    symbolSize: 3,//点大小

                    data: item.map(function (dataItem) {                   

                        return {

                            name: dataItem[0].name,//来源或流向修改

                            value: geoCoordMap[dataItem[0].name].concat([dataItem[0].value])//来源或流向修改

                        };

                    }),

                });

            });


            //把涟漪数据存到本地,市级返回时调用

            sessionStorage.setItem("series2",JSON.stringify(series2[0].data));   

        //  获取对应的json地图数据,然后向echarts注册该区域的地图,最后加载地图信息

        // @params {String} mapCode:json数据的地址

        // @params {String} name: 地图名称

        function loadMap(mapCode, name) {   

            axios.get(mapCode)

                .then(function (data) {                 

                    if (data) {

                        echarts.registerMap(name, data.data);

                        var option = {

                            tooltip: {

                                show: true,

                                formatter: function(params) {

                                    if (params.data) return params.name + ':' + params.data['value']

                                },

                            },

                            visualMap: {

                                show:false,

                                type: 'continuous',

                                text: ['', ''],

                                showLabel: true,

                                left: '50',

                                min: 0,

                                max: 100,

                                inRange: {

                                    color: ['#edfbfb', '#b7d6f3', '#40a9ed', '#3598c1', '#215096', ]

                                },

                                splitNumber: 0

                            },

                            series: [

                                {

                                name: 'MAP',

                                // map: 'china',

                                type: 'map',

                                mapType: name,

                                selectedMode: 'single',//是否允许选中多个区域

                                label: {

                                    normal: {

                                        show: false  //是否显示省名

                                    },

                                    emphasis: {

                                        show: true

                                    }

                                },

                                data: allData,

                                itemStyle: {

                                    normal: {

                                        areaColor: '#07609f',

                                        borderColor: 'white'

                                    }

                                },


                                },

                            ...series2

                            ],

                            geo: {

                                map: name,  //map类型使用name,避免显示双地图

                                type: 'scatter',

                                label: {

                                    normal: {

                                        show: false  //是否显示省名

                                    },

                                    emphasis: {

                                        show: false

                                    }

                                },

                            },

                        };

                        myChart.setOption(option);

                    } else {

                        alert('无法加载该地图');

                    }

                })

                .catch(function (error) {

                    console.log(error);

                });

        }

    }


  }

}

</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped>

.DataView{

  padding:20px 10px;

  /* background: rgba(15, 45, 95, 0.2); */

}

.main{

  height: 520px;

  width: 100%;

}

</style>

```

链接:https://pan.baidu.com/s/1a9TbR_SaLAuH4S8AXhUNnw

提取码:ay7s

复制这段内容后打开百度网盘手机App,操作更方便哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容