首页 > 其他分享 >Echarts河南地图下钻

Echarts河南地图下钻

时间:2023-01-14 22:55:15浏览次数:50  
标签:cityCode return name 地图 河南 value Json parentInfo Echarts

 

var parentJson = null;
var parentInfo = [{
  cityName: '河南',
  level: 'city',
  code: 410000,
},
];
getGeoJson(410000);
var timeFn = null;
// 利用高德api获取行政区边界geoJson
// adcode 行政区code 编号
function getGeoJson(adcode) {
  AMapUI.loadUI(['geo/DistrictExplorer'], (DistrictExplorer) => {
    var districtExplorer = new DistrictExplorer();
    districtExplorer.loadAreaNode(adcode, function (error, areaNode) {
      if (error) {
        console.error(error);
        return;
      }
      let Json = areaNode.getSubFeatures();
      if (Json.length > 0) {
        parentJson = Json;
      } else if (Json.length === 0) {
        Json = parentJson.filter((item) => {
          if (item.properties.adcode == adcode) {
            return item;
          }
        });
        if (Json.length === 0) return;
      }
      proceData(Json);
    });
  });
}

//处理数据
function proceData(Json) {
  let mapData = [{
    name: '郑州市',
    cityCode: '410100',
    value: '460',
  },
    {
      name: '开封市',
      cityCode: '410200',
      value: '1372',
    },
    {
      name: '洛阳市',
      cityCode: '410300',
      value: '851',
    },
    {
      name: '平顶山市',
      cityCode: '410400',
      value: '720',
    },
    {
      name: '安阳市',
      cityCode: '410500',
      value: '1139',
    },
    {
      name: '鹤壁市',
      cityCode: '410600',
      value: '772',
    },
    {
      name: '新乡市',
      cityCode: '410700',
      value: '8143',
    },
    {
      name: '焦作市',
      cityCode: '410800',
      value: '723',
    },
    {
      name: '濮阳市',
      cityCode: '410900',
      value: '705',
    },
    {
      name: '许昌市',
      cityCode: '411000',
      value: '448',
    },
    {
      name: '漯河市',
      cityCode: '411100',
      value: '1194',
    },
    {
      name: '三门峡市',
      cityCode: '411200',
      value: '560',
    },
    {
      name: '南阳市市',
      cityCode: '411300',
      value: '373',
    },
    {
      name: '商丘市',
      cityCode: '411400',
      value: '4543',
    },
    {
      name: '信阳市',
      cityCode: '411500',
      value: '716',
    },
    {
      name: '周口市',
      cityCode: '411600',
      value: '521',
    },
    {
      name: '驻马店市',
      cityCode: '411700',
      value: '1075',
    },
    {
      name: '济源市',
      cityCode: '419001',
      value: '285',
    },
    
  ];
  Json.map((item) => {
    mapData.forEach((ele) => {
      if (item.properties.adcode == ele.cityCode) {
        ele.level = item.properties.level;
      }
    });
  });
  let mapJson = {};
  //geoJson必须这种格式
  mapJson.features = Json;

  //去渲染echarts
  initEcharts(mapData, mapJson);
}

function initEcharts(mapData, mapJson) {
  let valArr = [];
  mapData.map(function (i) {
    valArr.push(i.value);
  });
  // 计算数据最大与最小值用于数据映射组件
  let max = Math.max.apply(null, valArr);
  let min = Math.min.apply(null, valArr);
  //注册
  echarts.registerMap('Map', mapJson);

  //这里加true是为了让地图重新绘制,不然如果你有筛选的时候地图会飞出去
  myChart.setOption(
    {
      backgroundColor: 'rgb(20,28,52)',
      tooltip: {
        trigger: 'item',
      },
      visualMap: {
        type: 'piecewise',
        min: min,
        max: max,
        splitNumber: 5,
        left: 35,
        bottom: 50,
        itemWidth: 21,
        itemHeight: 8,
        showLabel: false,
        orient: 'horizontal',
        text: ['高', '低'],
        itemGap: 2,
        textStyle: {
          color: '#fff',
        },
        inRange: '',
        color: [
          'rgba(7, 83, 114,0.8)',
          'rgba(24, 100, 141,0.9)',
          'rgba(33, 122, 168,0.8)',
          'rgba(28, 138, 187,0.7)',
          'rgba(34, 156, 199,0.8)',
        ],
        show: true,
      },

      series: [{
        name: '地图',
        type: 'map',
        map: 'Map',
        roam: true, //是否可缩放
        zoom: 1, //缩放比例
        aspectScale: 0.9, //长宽比0.75
        data: mapData,
        itemStyle: {
          normal: {
            show: true,
            areaColor: '#2E98CA',
            borderColor: 'rgb(185, 220, 227)',
            borderWidth: '1',
          },
        },
        label: {
          normal: {
            show: true, //显示省份标签
            textStyle: {
              color: 'rgb(249, 249, 249)', //省份标签字体颜色
              fontSize: 12,
            },
          },
          emphasis: {
            //对应的鼠标悬浮效果
            show: true,
            textStyle: {
              color: '#000',
            },
          },
        },
      },
      ],
    },
    true
  );
  // 单击下钻
}

//echarts点击事件
myChart.on('click', (params) => {
  clearTimeout(timeFn);
  timeFn = setTimeout(function () {
    // 无下级地图数据时不下钻
    if (!params.value) {
      alert('暂无数据');
      return;
    }
    //如果当前是最后一级,那就直接return
    if (parentInfo[parentInfo.length - 1].code == params.data.cityCode) {
      return;
    }
    let data = params.data;
    parentInfo.push({
      cityName: data.name,
      level: data.level,
      code: data.cityCode,
    });
    getGeoJson(data.cityCode);
  },
    250);
});

// 绑定双击事件,返回上级地图
myChart.on('dblclick', function (params) {
  clearTimeout(timeFn);
  if (parentInfo.length < 1) {
    return;
  }
  if (parentInfo.length === 1) {
    getGeoJson(parentInfo[parentInfo.length - 1].code);
    return;
  }
  parentInfo.pop();
  getGeoJson(parentInfo[parentInfo.length - 1].code);
});

 

标签:cityCode,return,name,地图,河南,value,Json,parentInfo,Echarts
From: https://www.cnblogs.com/yayuya/p/17052741.html

相关文章

  • 在vue中使用Echarts绘制叠堆折线面积图(可切换叠堆柱状图)
    (文章目录)效果我这里用的框架是Element+vue,将可视化图表用card卡片包起来,这个叠堆折线面积图主要实现的功能有:1.默认进入时看到的是叠堆折线面积图,在点击对应的元素切......
  • vue 使用echarts图表 setOption多次很卡问题解决
    项目场景:在开发ISM组态软件时,使用echarts图表,拖拽图表很卡。问题描述在vue中使用echarts使用setOption更新加载图形很慢原因分析:由于this.echartsView=echarts.init(view,......
  • 顺着这份Java面试地图,国内一二线互联网公司随便进...
    原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处。前言临近春节,这几天手头没什么事情,花了点时间,将自己近两年收集的面试真题,进行了一番深度归纳总结,......
  • Vue3+vite+Echarts案例大屏可视化--千峰(推荐)
    https://www.bilibili.com/video/BV14u411D7qK?p=33&spm_id_from=pageDriver&vd_source=e2cfe74d93fb5b3f60bd7487ede60218主题展示  Vue3.2中<template><!--......
  • 全网echarts案例资源大总结和echarts的高效使用技巧(细节版)
    全网echarts案例资源大总结和echarts的高效使用技巧(细节版)众所周知,在现今的开发大环境下,数据可视化(大屏化)项目在前端开发中的比重越来越大。而其中使用率最高的插件无疑......
  • echarts相关
    动态设置serisevarItem=function(){return{type:'bar',barWidth:20,layout:'none',//布局:"不采用任何布局"coordinateSystem:'carte......
  • Echarts常见设置属性
    图表边距letoption={grid:{left:'10%',right:'10%'}}展示标签内容格式与位置formatter{a}:系列名。{b}:数据名。{c}:数据值。{d}:百分比比例。position......
  • GIS杂谈:国内地图开发常用坐标系
    地图的坐标系有很多种,全球的,地方的,在postgis扩展表中,有srid标识的就有8000多个,这还不包括一些地方测绘部门的坐标系,当然有一些是保密的,外边也看不到。所以,有时去做专业地图......
  • echarts地图修改josn文件的坐标位置
    1.需求:修改地图显示地名的位置  2.方案:通过修改json文件中的坐标达到修改地名显示位置2.1在json文件中找到对应修改需改的位置2.2增加cp属性,对应的值是坐......
  • JSON字符串后台解析包含数组以百度地图API举例
    前言当你要获取某个json字符串的某个值时前台通过JSONP很容易通过Key方式直接获取但是Java后台就有点麻烦下面介绍如何解析json字符串例{"status":0,"me......