Echarts Map地图下钻至县级

**准备工作:**

1.首先使用vue-cli的脚手架生成vue项目。

2.然后使用npm安装echarts

npm install echarts -S

3.安装完后再mian.js中挂载到vue的实例上使用,当然你也可以哪里需要在再哪里引入

引入:

import echarts from 'echarts' // e-charts

挂载:

Vue.prototype.$echarts = echarts

**开始使用**

这里我是直接写在当前文件夹中,并没有封装在公共组件中,下一篇在接着讲怎么把echarts封装成组件

1.需要把视图装着的容器 

2.把echarts的逻辑代码写在methods:{}中,然后在调用这个方法

  mounted () {

    this.mapChart()

  },

  3.方法编写:直接上代码

    methods: {

    mapChart () {

      var myMapChart = this.$echarts.init(document.getElementById('main'))

      // 34个省、市、自治区的名字拼音映射数组

      var provinces = {

        // 23个省

        台湾: 'taiwan',

        河北: 'hebei',

        山西: 'shanxi',

        辽宁: 'liaoning',

        吉林: 'jilin',

        黑龙江: 'heilongjiang',

        江苏: 'jiangsu',

        浙江: 'zhejiang',

        安徽: 'anhui',

        福建: 'fujian',

        江西: 'jiangxi',

        山东: 'shandong',

        河南: 'henan',

        湖北: 'hubei',

        湖南: 'hunan',

        广东: 'guangdong',

        海南: 'hainan',

        四川: 'sichuan',

        贵州: 'guizhou',

        云南: 'yunnan',

        陕西: 'shanxi1',

        甘肃: 'gansu',

        青海: 'qinghai',

        // 5个自治区

        新疆: 'xinjiang',

        广西: 'guangxi',

        内蒙古: 'neimenggu',

        宁夏: 'ningxia',

        西藏: 'xizang',

        // 4个直辖市

        北京: 'beijing',

        天津: 'tianjin',

        上海: 'shanghai',

        重庆: 'chongqing',

        // 2个特别行政区

        香港: 'xianggang',

        澳门: 'aomen'

      }

      var cityMap = {

        北京市: '110100',

        天津市: '120100',

        上海市: '310100',

        重庆市: '500100',

        崇明县: '310200',

        湖北省直辖县市: '429000',

        铜仁市: '522200',

        毕节市: '522400',

        石家庄市: '130100',

        唐山市: '130200',

        秦皇岛市: '130300',

        邯郸市: '130400',

        邢台市: '130500',

        保定市: '130600',

        张家口市: '130700',

        承德市: '130800',

        沧州市: '130900',

        廊坊市: '131000',

        衡水市: '131100',

        太原市: '140100',

        大同市: '140200',

        阳泉市: '140300',

        长治市: '140400',

        晋城市: '140500',

        朔州市: '140600',

        晋中市: '140700',

        运城市: '140800',

        忻州市: '140900',

        临汾市: '141000',

        吕梁市: '141100',

        呼和浩特市: '150100',

        包头市: '150200',

        乌海市: '150300',

        赤峰市: '150400',

        通辽市: '150500',

        鄂尔多斯市: '150600',

        呼伦贝尔市: '150700',

        巴彦淖尔市: '150800',

        乌兰察布市: '150900',

        兴安盟: '152200',

        锡林郭勒盟: '152500',

        阿拉善盟: '152900',

        沈阳市: '210100',

        大连市: '210200',

        鞍山市: '210300',

        抚顺市: '210400',

        本溪市: '210500',

        丹东市: '210600',

        锦州市: '210700',

        营口市: '210800',

        阜新市: '210900',

        辽阳市: '211000',

        盘锦市: '211100',

        铁岭市: '211200',

        朝阳市: '211300',

        葫芦岛市: '211400',

        长春市: '220100',

        吉林市: '220200',

        四平市: '220300',

        辽源市: '220400',

        通化市: '220500',

        白山市: '220600',

        松原市: '220700',

        白城市: '220800',

        延边朝鲜族自治州: '222400',

        哈尔滨市: '230100',

        齐齐哈尔市: '230200',

        鸡西市: '230300',

        鹤岗市: '230400',

        双鸭山市: '230500',

        大庆市: '230600',

        伊春市: '230700',

        佳木斯市: '230800',

        七台河市: '230900',

        牡丹江市: '231000',

        黑河市: '231100',

        绥化市: '231200',

        大兴安岭地区: '232700',

        南京市: '320100',

        无锡市: '320200',

        徐州市: '320300',

        常州市: '320400',

        苏州市: '320500',

        南通市: '320600',

        连云港市: '320700',

        淮安市: '320800',

        盐城市: '320900',

        扬州市: '321000',

        镇江市: '321100',

        泰州市: '321200',

        宿迁市: '321300',

        杭州市: '330100',

        宁波市: '330200',

        温州市: '330300',

        嘉兴市: '330400',

        湖州市: '330500',

        绍兴市: '330600',

        金华市: '330700',

        衢州市: '330800',

        舟山市: '330900',

        台州市: '331000',

        丽水市: '331100',

        合肥市: '340100',

        芜湖市: '340200',

        蚌埠市: '340300',

        淮南市: '340400',

        马鞍山市: '340500',

        淮北市: '340600',

        铜陵市: '340700',

        安庆市: '340800',

        黄山市: '341000',

        滁州市: '341100',

        阜阳市: '341200',

        宿州市: '341300',

        六安市: '341500',

        亳州市: '341600',

        池州市: '341700',

        宣城市: '341800',

        福州市: '350100',

        厦门市: '350200',

        莆田市: '350300',

        三明市: '350400',

        泉州市: '350500',

        漳州市: '350600',

        南平市: '350700',

        龙岩市: '350800',

        宁德市: '350900',

        南昌市: '360100',

        景德镇市: '360200',

        萍乡市: '360300',

        九江市: '360400',

        新余市: '360500',

        鹰潭市: '360600',

        赣州市: '360700',

        吉安市: '360800',

        宜春市: '360900',

        抚州市: '361000',

        上饶市: '361100',

        济南市: '370100',

        青岛市: '370200',

        淄博市: '370300',

        枣庄市: '370400',

        东营市: '370500',

        烟台市: '370600',

        潍坊市: '370700',

        济宁市: '370800',

        泰安市: '370900',

        威海市: '371000',

        日照市: '371100',

        莱芜市: '371200',

        临沂市: '371300',

        德州市: '371400',

        聊城市: '371500',

        滨州市: '371600',

        菏泽市: '371700',

        郑州市: '410100',

        开封市: '410200',

        洛阳市: '410300',

        平顶山市: '410400',

        安阳市: '410500',

        鹤壁市: '410600',

        新乡市: '410700',

        焦作市: '410800',

        濮阳市: '410900',

        许昌市: '411000',

        漯河市: '411100',

        三门峡市: '411200',

        南阳市: '411300',

        商丘市: '411400',

        信阳市: '411500',

        周口市: '411600',

        驻马店市: '411700',

        省直辖县级行政区划: '469000',

        武汉市: '420100',

        黄石市: '420200',

        十堰市: '420300',

        宜昌市: '420500',

        襄阳市: '420600',

        鄂州市: '420700',

        荆门市: '420800',

        孝感市: '420900',

        荆州市: '421000',

        黄冈市: '421100',

        咸宁市: '421200',

        随州市: '421300',

        恩施土家族苗族自治州: '422800',

        长沙市: '430100',

        株洲市: '430200',

        湘潭市: '430300',

        衡阳市: '430400',

        邵阳市: '430500',

        岳阳市: '430600',

        常德市: '430700',

        张家界市: '430800',

        益阳市: '430900',

        郴州市: '431000',

        永州市: '431100',

        怀化市: '431200',

        娄底市: '431300',

        湘西土家族苗族自治州: '433100',

        广州市: '440100',

        韶关市: '440200',

        深圳市: '440300',

        珠海市: '440400',

        汕头市: '440500',

        佛山市: '440600',

        江门市: '440700',

        湛江市: '440800',

        茂名市: '440900',

        肇庆市: '441200',

        惠州市: '441300',

        梅州市: '441400',

        汕尾市: '441500',

        河源市: '441600',

        阳江市: '441700',

        清远市: '441800',

        东莞市: '441900',

        中山市: '442000',

        潮州市: '445100',

        揭阳市: '445200',

        云浮市: '445300',

        南宁市: '450100',

        柳州市: '450200',

        桂林市: '450300',

        梧州市: '450400',

        北海市: '450500',

        防城港市: '450600',

        钦州市: '450700',

        贵港市: '450800',

        玉林市: '450900',

        百色市: '451000',

        贺州市: '451100',

        河池市: '451200',

        来宾市: '451300',

        崇左市: '451400',

        海口市: '460100',

        三亚市: '460200',

        三沙市: '460300',

        成都市: '510100',

        自贡市: '510300',

        攀枝花市: '510400',

        泸州市: '510500',

        德阳市: '510600',

        绵阳市: '510700',

        广元市: '510800',

        遂宁市: '510900',

        内江市: '511000',

        乐山市: '511100',

        南充市: '511300',

        眉山市: '511400',

        宜宾市: '511500',

        广安市: '511600',

        达州市: '511700',

        雅安市: '511800',

        巴中市: '511900',

        资阳市: '512000',

        阿坝藏族羌族自治州: '513200',

        甘孜藏族自治州: '513300',

        凉山彝族自治州: '513400',

        贵阳市: '520100',

        六盘水市: '520200',

        遵义市: '520300',

        安顺市: '520400',

        黔西南布依族苗族自治州: '522300',

        黔东南苗族侗族自治州: '522600',

        黔南布依族苗族自治州: '522700',

        昆明市: '530100',

        曲靖市: '530300',

        玉溪市: '530400',

        保山市: '530500',

        昭通市: '530600',

        丽江市: '530700',

        普洱市: '530800',

        临沧市: '530900',

        楚雄彝族自治州: '532300',

        红河哈尼族彝族自治州: '532500',

        文山壮族苗族自治州: '532600',

        西双版纳傣族自治州: '532800',

        大理白族自治州: '532900',

        德宏傣族景颇族自治州: '533100',

        怒江傈僳族自治州: '533300',

        迪庆藏族自治州: '533400',

        拉萨市: '540100',

        昌都地区: '542100',

        山南地区: '542200',

        日喀则地区: '542300',

        那曲地区: '542400',

        阿里地区: '542500',

        林芝地区: '542600',

        西安市: '610100',

        铜川市: '610200',

        宝鸡市: '610300',

        咸阳市: '610400',

        渭南市: '610500',

        延安市: '610600',

        汉中市: '610700',

        榆林市: '610800',

        安康市: '610900',

        商洛市: '611000',

        兰州市: '620100',

        嘉峪关市: '620200',

        金昌市: '620300',

        白银市: '620400',

        天水市: '620500',

        武威市: '620600',

        张掖市: '620700',

        平凉市: '620800',

        酒泉市: '620900',

        庆阳市: '621000',

        定西市: '621100',

        陇南市: '621200',

        临夏回族自治州: '622900',

        甘南藏族自治州: '623000',

        西宁市: '630100',

        海东地区: '632100',

        海北藏族自治州: '632200',

        黄南藏族自治州: '632300',

        海南藏族自治州: '632500',

        果洛藏族自治州: '632600',

        玉树藏族自治州: '632700',

        海西蒙古族藏族自治州: '632800',

        银川市: '640100',

        石嘴山市: '640200',

        吴忠市: '640300',

        固原市: '640400',

        中卫市: '640500',

        乌鲁木齐市: '650100',

        克拉玛依市: '650200',

        吐鲁番地区: '652100',

        哈密地区: '652200',

        昌吉回族自治州: '652300',

        博尔塔拉蒙古自治州: '652700',

        巴音郭楞蒙古自治州: '652800',

        阿克苏地区: '652900',

        克孜勒苏柯尔克孜自治州: '653000',

        喀什地区: '653100',

        和田地区: '653200',

        伊犁哈萨克自治州: '654000',

        塔城地区: '654200',

        阿勒泰地区: '654300',

        自治区直辖县级行政区划: '659000',

        台湾省: '710000',

        香港特别行政区: '810100',

        澳门特别行政区: '820000'

      }

      // 直辖市和特别行政区-只有二级地图,没有三级地图

      var special = ['北京', '天津', '上海', '重庆', '香港', '澳门']

      var mapdata = []

      var _that = this

      // 这是组件开始初始化时需要拉去的数据--中国地图的数据

      $.getJSON('static/map/china.json', function (data) {

        let d = []

        for (var i = 0; i < data.features.length; i++) {

          d.push({

            name: data.features[i].properties.name

          })

        }

        mapdata = d

        // 注册地图

        _that.$echarts.registerMap('china', data)

        // 绘制地图

        renderMap('china', d)

      })

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

        if (params.name in provinces) {

          // 如果点击的是34个省、市、自治区,绘制选中地区的二级地图

          $.getJSON(

            'static/map/province/' + provinces[params.name] + '.json',

            function (data) {

              _that.$echarts.registerMap(params.name, data)

              var d = []

              for (var i = 0; i < data.features.length; i++) {

                d.push({

                  name: data.features[i].properties.name

                })

              }

              renderMap(params.name, d)

            }

          )

        } else if (params.seriesName in provinces) {

          // 如果是【直辖市/特别行政区】只有二级下钻

          if (special.indexOf(params.seriesName) >= 0) {

            renderMap('china', mapdata)

          } else {

            // 显示县级地图

            $.getJSON(

              'static/map/city/' + cityMap[params.name] + '.json',

              function (data) {

                _that.$echarts.registerMap(params.name, data)

                var d = []

                for (var i = 0; i < data.features.length; i++) {

                  d.push({

                    name: data.features[i].properties.name

                  })

                }

                renderMap(params.name, d)

              }

            )

          }

        } else {

          // 点击县级时是否返回

          renderMap('china', mapdata)

        }

      })

      // 初始化绘制全国地图配置

      var option = {

        backgroundColor: '#404a59',

        title: {

          text: 'Echarts3 中国地图下钻至县级',

          subtext: '三级下钻',

          left: 'center',

          textStyle: {

            color: '#fff',

            fontSize: 16,

            fontWeight: 'normal',

            fontFamily: 'Microsoft YaHei'

          },

          subtextStyle: {

            color: '#ccc',

            fontSize: 13,

            fontWeight: 'normal',

            fontFamily: 'Microsoft YaHei'

          }

        },

        tooltip: {

          trigger: 'item',

          formatter: '{b}'

        },

        toolbox: {

          show: true,

          orient: 'vertical',

          left: 'right',

          top: 'center',

          feature: {

            dataView: { readOnly: false },

            restore: {},

            saveAsImage: {}

          },

          iconStyle: {

            normal: {

              color: '#fff'

            }

          }

        },

        animationDuration: 1000,

        animationEasing: 'cubicOut',

        animationDurationUpdate: 1000

      }

      function renderMap (map, data) {

        // 初始化绘制全国地图配置

        console.log(map)

        option.title.subtext = map

        option.series = [

          {

            name: map,

            type: 'map',

            mapType: map,

            roam: false,

            data: data,

            //  data: convertedData[0],

            nameMap: {

              china: '中国'

            },

            label: {

              normal: {

                show: true,

                textStyle: {

                  color: '#999',

                  fontSize: 13

                }

              },

              emphasis: {

                show: true,

                textStyle: {

                  color: '#fff',

                  fontSize: 13

                }

              }

            },

            itemStyle: {

              normal: {

                areaColor: '#323c48',

                borderColor: 'dodgerblue'

              },

              emphasis: {

                areaColor: 'darkorange'

              }

            }

          }

        ]

        // 渲染地图

        myMapChart.setOption(option)

      }

    }

  }

个人博客:https://www.cnblogs.com/wjs593/p/10923187.html

你可能感兴趣的:(Echarts Map地图下钻至县级)