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.需要把视图装着的容器 <div id="main style=“width: 100%;height:800px;”>

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts3D 是百度开发的一个基于 WebGL 技术的数据可视化库,支持 3D 数据展示。在 ECharts3D 中,地图是一个内置的组件,可以通过配置数据来展示不同区域的数据分布。下功能指的是点击地图上的区域,可以进入该区域的更详细的数据展示页面。 实现 ECharts3D 地图的关键在于对数据的处理和配置。具体实现步骤如下: 1. 准备地图数据:ECharts3D 内置了一些地图数据,也可以从外部加载地图数据。可以通过 GeoJSON 格式的数据来描述地图边界和区域信息。 2. 准备下数据:点击地图上的区域后,需要进入该区域的更详细数据展示页面。因此需要准备好该区域的详细数据,并在点击事件中进行处理。 3. 配置 ECharts3D 地图组件:通过 ECharts3D 的配置项,设置地图的样式、坐标系、区域颜色等属性。并将准备好的地图数据和下数据绑定到地图组件上。 4. 监听点击事件:通过 ECharts3D 提供的事件监听机制,在地图上监听用户的点击事件。当用户点击某个区域时,根据该区域的数据信息进行下操作,并展示该区域的详细数据。 下面是一个简单的示例代码,演示如何实现 ECharts3D 地图: ```javascript // 引入 ECharts3D 库 import echarts from 'echarts'; import 'echarts-gl'; // 准备地图数据 const mapData = [ {name: '北京', value: 100}, {name: '上海', value: 200}, {name: '广州', value: 300}, {name: '深圳', value: 400}, // ... 其他区域数据 ]; // 准备下数据 const detailData = [ {name: '北京区域1', value: 50}, {name: '北京区域2', value: 50}, // ... 其他区域数据 ]; // 配置地图组件 const option = { geo3D: { map: 'china', // 使用中国地图 itemStyle: { areaColor: '#fff', // 区域背景颜色 opacity: 1, // 区域透明度 borderWidth: 1, // 区域边框宽度 borderColor: '#000', // 区域边框颜色 }, label: { show: true, // 是否显示区域标签 textStyle: { color: '#000', // 标签文字颜色 fontSize: 12, // 标签文字大小 }, }, regions: mapData, // 绑定地图数据 }, series: [{ type: 'bar3D', data: detailData, // 绑定下数据 }], }; // 监听点击事件 echarts.init(document.getElementById('chart')).on('geo3DClick', function(params) { const name = params.name; // 根据区域名称查询对应的下数据 const data = detailData.filter(item => item.name.startsWith(name)); // 更新下数据并重新渲染 option.series[0].data = data; echarts.init(document.getElementById('chart')).setOption(option); }); ``` 在上面的示例代码中,我们通过配置 ECharts3D 的 `geo3D` 组件来展示地图,并将准备好的地图数据绑定到组件上。在 `series` 中,我们配置了一个 3D 柱状图,用于展示下数据。在监听 `geo3DClick` 事件时,我们根据点击的区域名称查询对应的下数据,并更新 `series` 中的数据,最后重新渲染图表即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值