天我们来攻克地图下钻这一难点
echarts官方文档的介绍中有关于南丁格尔图和旭日图的下钻,它们的思想归根结底就是使用新的chart来覆盖旧的chart,而且整个过程相当平滑,文档甚至将其作为了卖点(但地图下钻可没这流畅功能)
那么我们首先要写一个对应城市的js函数
function City(province){
//console.log(cities)
var myChartc = echarts.init(document.querySelector('#main'))
myChartc.setOption( options={
slient: true,
title : {
text: '中国疫情数据地图',
left: 'center'
},
legend: {
orient: 'vertical',
selectedMode:'single',
left: 'left',
data:['累计确诊人数','现存病例','疑似感染者']
},
visualMap: {
min: 0,
max: 500,
left: 'left',
top: 'bottom',
text:['高','低'], // 文本,默认为数值文本
calculable : true
},
toolbox: {
show: true,
orient : 'vertical',
left: 'right',
top: 'center',
feature : {
mark : {show: true},
saveAsImage : {show: true}
}
},
series : [
{
name: '累计确诊人数',
type: 'map',
mapType: province,
roam: false,
label: {
normal: {
show:true
},
emphasis: {
show:true
}
},
data:nowconfirm
},
{
name: '现存病例',
type: 'map',
mapType: province,
label: {
normal: {
show:true
},
emphasis: {
show:true
}
},
data:confirm
},
{
name: '疑似感染者',
type: 'map',
mapType: province,
label: {
normal: {
show:true
},
emphasis: {
show:true
}
},
data:suspect
}
],
tooltip : {
trigger: 'item',
formatter: function(params) {
var res = params.name+'<br/>';
var myseries = options.series;
for (var i = 0; i < myseries.length; i++) {
for(var j=0;j<myseries[i].data.length;j++){
if(myseries[i].data[j].name==params.name){
res+=myseries[i].name +' : '+myseries[i].data[j].value+'</br>';
}
}
}
return res;
}
}
})//myChart.setOption
myChartc.on('click', function (params) {
var str_p = params.data.name;
});
}//function city
接下来修改china函数中的click事件变成这个样子:
myChart.on('click', function (params) {
var str_p = params.data.name;
City(str_p);
});
之后我们就可以愉快地使用啦!
具体效果如下:

点击一下


浙公网安备 33010602011771号