2021年首更~~~
一、echarts geo地图模块
导入地图json,我罕用的两种渠道
1、通过地图选择器下载geoJSON地址。
2、DIY,应用geojson.io工具绘制,这工具除了绘制边界外,还能增加区域的shortcode(划重点)和cp(中心点),实现后转化为json格局后即可导入
实现代码
html设置有挂载id的盒标签
js(蕴含悬停弹窗)
var mapChart = echarts.init(document.getElementById('map'));mapChart.showLoading();var data = [];$.getJSON("./js/shaoguan.json", function (geoJson) { echarts.registerMap('深圳市', geoJson); data = geoJson.features.map((item) => { // 显示窗口的数据转换 return { value: (Math.random() * 1000).toFixed(2), name: item.properties.name } }); mapChart.hideLoading(); function getMapOption(data) { var series = []; series.push({ tooltip: { // 显示的窗口 trigger: 'item', position: function (point, params, dom, rect, size) { return [point[0] + 130, point[1]]; }, formatter: function (item) { var tipHtml = ''; return tipHtml; } }, name: '深圳市', type: 'map', map: '深圳市', // 自定义扩大图表类型 zoom: 0.58, //缩放 showLegendSymbol: false, label: { // 文字 show: true, normal: { show: true, textStyle: { color: '#fff', fontSize: 20, } }, emphasis: { textStyle: { color: '#fff', fontSize: 20, } } }, itemStyle: { //地图款式 normal: { areaColor: '#013C62', shadowColor: '#182f68', shadowOffsetX: 0, shadowOffsetY: 0, borderColor: '#2ab8ff', borderWidth: 1.5, }, emphasis: { areaColor: '#08ffe1', borderWidth: 0, color: 'green', label: { show: false } } }, emphasis: { //鼠标移入动静的时候显示的默认款式 itemStyle: { areaColor: '#2AB8FF', borderColor: '#404a59', borderWidth: 1 } }, layoutCenter: ['40%', '50%'], layoutSize: '160%', markPoint: { symbol: 'none' }, data: data, }) let options = { backgroundColor: 'transparent', // 背景 tooltip: { // 窗口外框 backgroundColor: 'rgba(0,0,0,0)', trigger: 'item', }, grid: [{ left: '30%', }], legend: { show: false, }, visualMap: { show: false, type: 'piecewise', //分段型 left: 0, top: 0, splitNumber: 6, inverse: true, backgroundColor: 'transparent', textGap: 5, textStyle: { color: '#ffffff', fontSize: 16 }, pieces: [{ min: 0, max: 0, color: '#013C62' }, { min: 1, max: 1, color: '#deb5b4' }, { min: 2, max: 10, color: '#dd6b66' }], }, series: series } return options; } mapChart.setOption(getMapOption(lineData));})
其中option中visualMap是区域色彩字段,依据接口返回字段能够设置不同色彩的区块
二、面积雷同的饼状图显示差异化数据
间接上option
数据格式均为[{name: '', value: ''}]
function getRingPlusPieOption (outdata, innerdata, labellist, trueValue){ var outData = []; var innerData = []; for (var i = 0; i < outdata.length; i++) { outData.push({name: outdata[i].name, value: outdata[i].value}) } for (var i = 0; i < innerdata.length; i++) { innerData.push({name: innerdata[i].name, value: innerdata[i].value}) } var option = { tooltip: { trigger: 'item', formatter: function (item) { if (item.componentIndex === 0) { return `${item.name}:${trueValue[item.dataIndex]}` } else { return `${item.name}:${trueValue[item.dataIndex+3]}` } } }, color: colorGroup2, legend: { top: 80, orient: 'vertical', textStyle: {fontSize: 16, color: '#fff',padding:[0, 12 ,0 ,4],}, left: 10, data: labellist }, series: [ { name: '社团状况', type: 'pie', selectedMode: 'single', radius: [0, '40%'], label: { show:false }, labelLine: { show: false }, data: innerData }, { name: '社团状况', type: 'pie', label: { normal: { textStyle: { fontSize: 16, color:'#fff' }, position: 'inner' }, }, labelLine: { show: false }, radius: ['55%', '75%'], data: outData } ] }; return option;}