今天优化了之前开发好的地图功能,增加了视觉映射组件及地图上显示数据。
接下来我们看下代码:
视觉映射组件:
visualMap: {
min: 0, //最小值
max: 1000, //最大值
orient: "vertical", //图例模式
left: 26,
bottom: 26,
showLabel: true, //显示图例文本
precision: 0, //数据展示无小数点
itemWidth: 20, //图例宽度
itemHeight: 15, //图例高度
textGap: 10, //图例间距
inverse: true, //数据反向展示
hoverLink:false,
inRange: { //选中图例后背景半透明
color: ['rgba(3,4,5,0.4)'],
},
pieces: [{
gt: 1001,
label: ">1000次",
color: "#7b1c1c",
},
{
gte: 500,
lte: 1000,
label: "500-1000次",
color: "#bd4141",
},
{
gte: 100,
lte: 499,
label: "100-499次",
color: "#e76262",
},
{
gte: 10,
lte: 99,
label: "10-99次",
color: "#ff9595",
},
{
gte: 1,
lte: 9,
label: "1-9次",
color: "#ffc1c1",
},
{
lte: 0,
label: "0次",
color: "#ffe5e5",
},
],
},
lt 小于, gt 大于,lte 小于等于,gte 大于等于
地图上展示数值
series: [{
itemStyle: {
normal: {
label: {
show: true,
formatter:'{c}' + '次'+'\n{b}',
},
},
},
}]
全部代码如下:
echarts.registerMap('china', chinaJson);
var chart = echarts.init(document.getElementById('chinaMap'));
var data1 = [
{
name: '北京',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '上海',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '天津',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '重庆',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '河北',
lable1: '异常次数',
value: '10',
lable2: '异常终端',
numbar: '10'
},
{
name: '山东',
lable1: '异常次数',
value: '2',
lable2: '异常终端',
numbar: '8'
},
{
name: '陕西',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '山西',
lable1: '异常次数',
value: '200',
lable2: '异常终端',
numbar: '100'
},
{
name: '辽宁',
lable1: '异常次数',
value: '2000',
lable2: '异常终端',
numbar: '1000'
},
{
name: '吉林',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '黑龙江',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '宁夏',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '江苏',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '河南',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '安徽',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '浙江',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '湖南',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '湖北',
lable1: '异常次数',
value: '620',
lable2: '异常终端',
numbar: '10'
},
{
name: '甘肃',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '青海',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '西藏',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '新疆',
lable1: '异常次数',
value: '2000',
lable2: '异常终端',
numbar: '1000'
},
{
name: '内蒙古',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '贵州',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '四川',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '江西',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '福建',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '广东',
lable1: '异常次数',
value: '20',
lable2: '异常终端',
numbar: '10'
},
{
name: '广西',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '云南',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0',
},
{
name: '海南',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '香港',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '澳门',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
},
{
name: '台湾',
lable1: '异常次数',
value: '0',
lable2: '异常终端',
numbar: '0'
}
];
chart.setOption({
tooltip: {
trigger: 'item',
padding: [10, 15],
backgroundColor: '#fff',
borderWidth: .25, //区域边框宽度
borderColor: '#666', //区域边框颜色
shadowColor: '#d2d2d2', //底色阴影
shadowOffsetX: 5,
shadowOffsetY: 5,
textStyle: {
color: '#000',
fontSize: 16,
fontWeight: 'bolder'
},
formatter: function(val) {
return val.data.name + '<div class="bjMap">' +
'<div class="">' +
'<p>' + val.data.lable1 + ':' + '</p>' +
'<p>' + val.data.value + '次' + '</p>' +
'</div>' +
'<div class="">' +
'<p>' + val.data.lable2 + ':' + '</p>' +
'<p>' + val.data.numbar + '次' + '</p>' +
'</div>' +
'</div>'
}
},
visualMap: {
min: 0, //最小值
max: 1000, //最大值
orient: "vertical", //图例模式
left: 26,
bottom: 26,
showLabel: true, //显示图例文本
precision: 0, //数据展示无小数点
itemWidth: 20, //图例宽度
itemHeight: 15, //图例高度
textGap: 10, //图例间距
inverse: true, //数据反向展示
hoverLink:false,
inRange: { //选中图例后背景半透明
color: ['rgba(3,4,5,0.4)'],
},
pieces: [{
gt: 1001,
label: ">1000次",
color: "#7b1c1c",
},
{
gte: 500,
lte: 1000,
label: "500-1000次",
color: "#bd4141",
},
{
gte: 100,
lte: 499,
label: "100-499次",
color: "#e76262",
},
{
gte: 10,
lte: 99,
label: "10-99次",
color: "#ff9595",
},
{
gte: 1,
lte: 9,
label: "1-9次",
color: "#ffc1c1",
},
{
lte: 0,
label: "0次",
color: "#ffe5e5",
},
],
},
geo: {
map: 'china',
zoom: 1.2,
roam: false,
itemStyle: {
normal: {
borderWidth: 2, //设置外层边框
borderColor: '#444',
shadowColor: '#d2d2d2', //底色阴影
shadowOffsetX: 0,
shadowOffsetY: 10
}
}
},
series: [{
type: 'map',
map: 'china',
zoom: 1.2,
selectedMode: false,
label: {
normal: {
show: true, //显示省份标签
textStyle: {
color: "#000",
fontSize:13
} //省份标签字体颜色
},
emphasis: { //对应的鼠标悬浮效果
show: true,
textStyle: {
color: "#fff"
}
}
},
itemStyle: {
normal: {
borderWidth: .35, //区域边框宽度
borderColor: '#444', //区域边框颜色
areaColor: "#ffe5e5", //区域颜色
label: {
show: true,
formatter:'{c}' + '次'+'\n{b}',
},
},
emphasis: {
borderWidth: .5, //鼠标滑过区域,区域边框宽度
areaColor: "#4a1111", //鼠标滑过区域背景色
borderWidth: 1, //鼠标划过区域 区域边框
}
},
data: data1
}],
});
window.addEventListener("resize", function() {
echarts.init(document.getElementById('chinaMap')).resize();
});