echarts图表展示地图指定区域

echarts图表,结合城市范围选择器,实现展示地图指定区域,且可以点击城市下穿至下一级区域交互效果;

指定区域获取方式:
城市范围选择器:http://datav.aliyun.com/portal/school/atlas/area_selector

示例1:
echarts图表,展示地图指定区域,并写入经纬度标注点展示标注;
点击城市下穿至下一级区域;
下级区域点击可返回至上级;
区域变化时,重置经纬度标注点数据;
点击标注点可获取相应标识,可对应做相应处理;

demo:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>合肥地图</title>
    <style>
      *{ margin: 0; padding: 0;}
      body{ background: linear-gradient(45deg , #001B4B , #006FCA , #006FCA , #003783);}
    </style>
  </head>
  <body>
    
    <div id="main" style="width: 100vw; height: 100vh;"></div>
    
    <script src="//libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script>
    
    <script>
      var listKey = {
        '合肥市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340100_full.json',
        },
        '瑶海区':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340102.json',
          points:[{name: '瑶海区111',value: [117.313076,31.866118]},]
        },
        '庐阳区':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340103.json',
          points:[{name: '庐阳区111',value: [117.261397,31.889056]},{name: '庐阳区222',value: [117.269733,31.881452]},]
        },
        '蜀山区':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340104.json',
          points:[{name: '蜀山区111',value: [117.157229,31.872589]},{name: '蜀山区222',value: [117.173902,31.848054]},]
        },
        '包河区':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340111.json',
          points:[{name: '包河区111',value: [117.298183,31.81746]},{name: '包河区222',value: [117.407992,31.761968]},]
        },
        '长丰县':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340121.json',
          points:[{name: '长丰县111',value: [117.168961,32.490058]},]
        },
        '肥东县':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340122.json',
          points:[{name: '肥东县111',value: [117.473675,31.899776]},{name: '肥东县222',value: [117.473675,31.890456]},]
        },
        '肥西县':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340123.json',
          points:[{name: '肥西县111',value: [117.09212,31.763079]},{name: '肥西县222',value: [117.051876,31.718367]},]
        },
        '庐江县':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340124.json',
          points:[{name: '庐江县111',value: [117.293574,31.273179]},{name: '庐江县222',value: [117.304497,31.224772]},]
        },
        '巢湖市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340181.json',
          points:[{name: '巢湖市111',value: [117.802437,31.639333]},{name: '巢湖市222',value: [117.897298,31.62064]},]
        },
      }
      var keyName = '合肥市';
      function setMap(){
        // $.get('//geo.datav.aliyun.com/areas_v3/bound/340100_full.json', function (geoJson) {
        $.get(listKey[keyName].json, function (geoJson) {
          myChart.hideLoading();
          echarts.registerMap('HF', geoJson);
          myChart.setOption(
            (option = {
              title: {
                show: true, //显示标题
                // left: 'left', //显示在横向位置
                // top: 'top', //显示在竖向位置
                textStyle:{
                  color:'#ffffff'
                },
                text: '合肥地图',
                subtext: 'ECharts 快速上手', //点击 跳转链接(sublink)
                sublink:'https://echarts.apache.org/handbook/zh/get-started/',
                subtextStyle:{
                  color:'#fff'
                },
              },
              tooltip: {
                trigger: 'item',
                formatter: '{b}<br/>{c}(单位)'
              },
              toolbox: {
                show: true, // 显示菜单
                orient: 'vertical',
                // left: 'right', //显示在横向位置
                // top: 'top', //显示在竖向位置
                iconStyle:{
                  borderColor:'#fff'
                },
                feature: {
                  dataView: { readOnly: false }, //数据视图
                  restore: {}, //刷新重置
                  saveAsImage: {}, //保存为图片
                }
              },
              visualMap: {
                show: true, //显示数据区间查看器
                min: 10,
                max: 600,
                text: ['High', 'Low'],
                // left: 'left', //显示在横向位置
                // top: 'bottom', //显示在竖向位置
                textStyle:{
                  color:'#ffffff'
                },
                realtime: false,
                calculable: true,
                inRange: {
                  // 地图渲染色值(根据data中value数据区间展示对应渐变过度色值,值越小展示越靠前的色值)
                  // color: ['#B0E1FF', '#63C1FD' , '#3CADF4'],
                  color: ['lightskyblue', 'yellow', 'orangered'],
                }
              },
              series: [
                {
                  name: '合肥地图',
                  type: 'map',
                  map: 'HF',
                  label: {
                    show: true
                  },
                  data: [
                    { name: '瑶海区', value: 10 }, //{b} : name {c} : value
                    { name: '庐阳区', value: 50 },
                    { name: '蜀山区', value: 100 },
                    { name: '包河区', value: 150 },
                    { name: '长丰县', value: 300 },
                    { name: '肥东县', value: 400 },
                    { name: '肥西县', value: 500 },
                    { name: '庐江县', value: 600 },
                    { name: '巢湖市', value: 70 },
                  ],
                  // 自定义名称映射(地图JSON中name是英文的展示处理)
                  nameMap: {
                    'yaohai': '瑶海区',
                    // ...
                  }
                },
                // 写入经纬度标注点所需
                {
                  name: '',
                  type: 'scatter',
                  coordinateSystem: 'geo',
                  color: ['#000'],
                  tooltip: {
                    position: "right",
                    color: "#000",
                    formatter(d) {
                      // console.log(d)
                      return `<div style="padding: 5px 10px;">【${d.data.name}】</div>`;
                    },
                  },
                  itemStyle: {
                    color: '#ddb926',
                    normal: {
                      areaColor: '#8abcd1',
                      borderColor: '#fff',
                      borderWidth: 1,
                    },
                    emphasis: {
                      areaColor: '#fff',
                      borderColor: '#ff0000',
                      borderWidth: 0.5,
                    }
                  },
                  // 经纬度数据
                  data: keyName == '合肥市' ? [].concat(listKey['瑶海区'].points,listKey['庐阳区'].points,listKey['蜀山区'].points,listKey['包河区'].points,listKey['长丰县'].points,listKey['肥东县'].points,listKey['肥西县'].points,listKey['庐江县'].points,listKey['巢湖市'].points) : listKey[keyName].points,
                }
              ],
              // 写入经纬度标注点所需
              geo: {
                show: true,
                map: 'HF',
                type: 'map',
                // mapType: 'anhui',
                roam: false,
                // label: {
                //   normal: {
                //     // 显示省份标签
                //     show: false,
                //     textStyle: {
                //       color: '#fff',
                //       fontSize: 10
                //     }
                //   },
                //   emphasis: {
                //     // 对应的鼠标悬浮效果
                //     show: true,
                //     // 选中后的字体样式
                //     textStyle: {
                //       color: '#000',
                //       fontSize: 14
                //     }
                //   }
                // },
                // itemStyle: {
                //   color: '#ddb926',
                //   normal: {
                //     areaColor: '#8abcd1',
                //     borderColor: '#fff',
                //     borderWidth: 1
                //   },
                //   emphasis: {
                //     borderWidth: 0.5,
                //     borderColor: '#8abcd1',
                //     areaColor: '#fff'
                //   }
                // },
                // emphasis: {
                //   label: {
                //     show: false
                //   }
                // }
              }
            })
          );
        });
      }
      
      var chartDom = document.getElementById('main');
      var myChart = echarts.init(chartDom);
      var option;
      
      myChart.showLoading();
      setMap();
      
      option && myChart.setOption(option);
      window.addEventListener('resize', myChart.resize);
      myChart.on('click', function (param) {
        console.log(param)
        console.log(param.name)
        if(!listKey[param.name]){
          return;
        }
        if(keyName == param.name){
          keyName = '合肥市';
        }else{
          keyName = param.name;
        }
        setMap();
      })
    </script>
    
    
  </body>
</html>

示例2:
echarts图表,展示地图指定区域;
部分城市点击可下穿至下一级区域;
下级区域点击第二次时,可返回至上级;

demo:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>安徽地图</title>
    <style>
      *{ margin: 0; padding: 0;}
      body{ background: linear-gradient(45deg , #faddcb , #eb493c);}
    </style>
  </head>
  <body>
    
    <div id="main" style="width: 100vw; height: 100vh;"></div>
    
    <script src="//libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script>
    
    <script>
      var listKey = {
        '安徽省':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340000_full.json',
        },
        '合肥市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340100_full.json',
        },
        '芜湖市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340200_full.json',
        },
        // '蚌埠市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/340300.json',
        // },
        // '淮南市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/340400.json',
        // },
        // '马鞍山市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/340500.json',
        // },
        // '淮北市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/340600.json',
        // },
        '铜陵市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/340700_full.json',
        },
        // '安庆市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/340800.json',
        // },
        // '黄山市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341000.json',
        // },
        '滁州市':{
          json:'https://geo.datav.aliyun.com/areas_v3/bound/341100_full.json',
        },
        // '阜阳市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341200.json',
        // },
        // '宿州市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341300.json',
        // },
        // '六安市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341500.json',
        // },
        // '亳州市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341600.json',
        // },
        // '池州市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341700.json',
        // },
        // '宣城市':{
        //   json:'https://geo.datav.aliyun.com/areas_v3/bound/341800.json',
        // },
      }
      var isBackBefore = false; //根据此标识设置二级第二次点击返回上级
      var keyName = '安徽省';
      function setMap(){
        // $.get('//geo.datav.aliyun.com/areas_v3/bound/340100_full.json', function (geoJson) {
        $.get(listKey[keyName].json, function (geoJson) {
          myChart.hideLoading();
          echarts.registerMap('AnHui', geoJson);
          myChart.setOption(
            (option = {
              visualMap: {
                show: false, //显示数据区间查看器
                min: 0,
                max: 100,
                inRange: {
                  // 地图渲染色值(根据data中value数据区间展示对应渐变过度色值,值越小展示越靠前的色值)
                  // color: ['lightskyblue', 'yellow', 'orangered'],
                  color: ['rgba(255,0,0,.1)','rgba(255,0,0,1)'],
                }
              },
              tooltip: {
                trigger: 'item',
                formatter: '{b}<br/>点亮数:{c}',
                backgroundColor: 'rgba(255,255,255,.8)',
                borderColor: 'rgba(255,255,255,0)',
                textStyle: {
                  fontSize: 26,
                }
              },
              series: [
                {
                  name: '安徽地图',
                  type: 'map',
                  map: 'AnHui',
                  // aspectScale: 1, //长宽比, 默认是: 0.75
                  zoom: 1.2, //当前视角的缩放比例, 默认是: 1
                  label: {
                    show: true,
                    fontSize: 30,
                    color: 'yellow',
                  },
                  // 地图区域的多边形 图形样式
                  itemStyle: {
                    areaColor: '#f00', //地图区域的颜色(设置了 visualMap inRange color 则其权重高)
                    // color: '#eee', //
                    borderColor: '#fff886',
                    borderWidth: 2,
                    // borderType: 'solid', // solid dashed dotted
                    shadowColor: 'rgba(0, 0, 0, 0.2)',
                    shadowBlur: 10,
                    shadowOffsetX: 1,
                    shadowOffsetY: 1,
                    // opacity: 1,
                  },
                  // 高亮状态下的多边形和标签样式
                  emphasis: {
                    itemStyle: {
                      areaColor: '#ff0', //地图区域的颜色
                    },
                    label: {
                      color: '#f00',
                    },
                  },
                  // 选中状态下的多边形和标签样式
                  select: {
                    itemStyle: {
                      areaColor: '#ff0', //地图区域的颜色
                    },
                    label: {
                      color: '#f00',
                    },
                  },
                  data: [
                    { name: '蚌埠市', value: 0 },
                    { name: '淮南市', value: 10 },
                    { name: '马鞍山市', value: 20 },
                    { name: '淮北市', value: 30 },
                    { name: '安庆市', value: 40 },
                    { name: '黄山市', value: 50 },
                    { name: '阜阳市', value: 60 },
                    { name: '宿州市', value: 70 },
                    { name: '六安市', value: 80 },
                    { name: '亳州市', value: 90 },
                    { name: '池州市', value: 100 },
                    { name: '宣城市', value: 110 },
                    // 合肥市-对应数据
                    { name: '合肥市', value: 90 },
                    { name: '瑶海区', value: 10 },
                    { name: '庐阳区', value: 10 },
                    { name: '蜀山区', value: 10 },
                    { name: '包河区', value: 10 },
                    { name: '长丰县', value: 10 },
                    { name: '肥东县', value: 10 },
                    { name: '肥西县', value: 10 },
                    { name: '庐江县', value: 10 },
                    { name: '巢湖市', value: 10 },
                    // 芜湖市-对应数据
                    { name: '芜湖市', value: 70 },
                    { name: '镜湖区', value: 10 },
                    { name: '鸠江区', value: 10 },
                    { name: '弋江区', value: 10 },
                    { name: '湾沚区', value: 10 },
                    { name: '繁昌区', value: 10 },
                    { name: '南陵县', value: 10 },
                    { name: '无为市', value: 10 },
                    // 铜陵市-对应数据
                    { name: '铜陵市', value: 40 },
                    { name: '铜官区', value: 10 },
                    { name: '义安区', value: 10 },
                    { name: '郊区', value: 10 },
                    { name: '枞阳县', value: 10 },
                    // 滁州市-对应数据
                    { name: '滁州市', value: 80 },
                    { name: '琅琊区', value: 10 },
                    { name: '南谯区', value: 10 },
                    { name: '来安县', value: 10 },
                    { name: '全椒县', value: 10 },
                    { name: '定远县', value: 10 },
                    { name: '凤阳县', value: 10 },
                    { name: '天长市', value: 10 },
                    { name: '明光市', value: 10 },
                  ]
                },
              ],
            })
          );
        });
      }
      
      var chartDom = document.getElementById('main');
      var myChart = echarts.init(chartDom);
      var option;
      
      myChart.showLoading();
      setMap();
      
      option && myChart.setOption(option);
      window.addEventListener('resize', myChart.resize);
      myChart.on('click', function (param) {
        // console.log(param)
        // console.log(param.name)
        if(!listKey[param.name]){
          // console.log(['合肥市','芜湖市','铜陵市','滁州市'].indexOf(keyName))
          if(['合肥市','芜湖市','铜陵市','滁州市'].indexOf(keyName) != -1){
            if(isBackBefore){
              isBackBefore = false;
              keyName = '安徽省';
              setMap();
            }else{
              isBackBefore = true;
            }
          }
          return;
        }
        // console.log(keyName , param.name)
        // if(keyName == param.name){
        //   keyName = '合肥市';
        // }else{
          keyName = param.name;
        // }
        setMap();
      })
    </script>
    
    
  </body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值