上文效果
上文【数据可视化】项目分布地图设计之显示省份地图(点击可查看原文) 中,我们实现了一个空白的陕西省地图,在接下来的步骤中,我们将调整地图的样式,让其符合可视化整体风格。
本节目标
- 增加鼠标悬停事件,能够显示项目数量(toolTip)
实现步骤
基于上文代码(点击查看),逐个实现功能
1. 增加鼠标悬停事件,高亮显示,并且能够显示项目数量
- 创建一个含有陕西地市划分的数组。本阶段其实有没有经纬度都可以。只是为了方便后续,我们把经纬度加上了。
var shanxiCity = [{"cp":[108.948024,34.263161],"name":"西安市"},
{"cp":[108.979608,34.916582],"name":"铜川市"},
{"cp":[107.14487,34.369315],"name":"宝鸡市"},
{"cp":[108.705117,34.333439],"name":"咸阳市"},
{"cp":[109.502882,34.499381],"name":"渭南市"},
{"cp":[109.49081,36.596537],"name":"延安市"},
{"cp":[107.028621,33.077668],"name":"汉中市"},
{"cp":[109.741193,38.290162],"name":"榆林市"},
{"cp":[109.029273,32.6903],"name":"安康市"},
{"cp":[109.939776,33.868319],"name":"商洛市"}]
- 遍历数组,创建一个地图上项目分布的数据
var data = []
shanxiCity.forEach(function(v) {
// 地区名称
var name = v.name;
data.push({
name: name,
value: Math.round(Math.random() * 10 + 10)
})
});
- 将data添加到series中的map系列中,并且声明toolTip的显示方式
- 全部代码如下所示
function echart_map() {
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('chart_map'));
var mapName = '陕西'
var data = []
shanxiCity.forEach(function(v) {
// 地区名称
var name = v.name;
data.push({
name: name,
value: Math.round(Math.random() * 10 + 10)
})
});
option = {
tooltip: {
trigger: 'item',
formatter: function(params) {
var toolTiphtml = ''
toolTiphtml += params.name+':<br>'
toolTiphtml+='项目数:'+params.value+"<br>"
return toolTiphtml;
}
},
geo: {
show: true,
map: mapName,
label: {
normal: {
show: true
},
emphasis: {
show: true,
}
},
roam: false,
itemStyle: {
normal: {
areaColor: '#fff',
borderColor: '#3B5077',
},
emphasis: {
areaColor: '#2B91B7',
}
}
},
series: [
{
type: 'map',
map: mapName,
geoIndex: 0,
aspectScale: 0.75, //长宽比
showLegendSymbol: false, // 存在legend时显示
label: {
normal: {
show: true
},
emphasis: {
show: false,
textStyle: {
color: '#fff'
}
}
},
roam: true,
itemStyle: {
normal: {
areaColor: '#031525',
borderColor: '#0227ad',
},
emphasis: {
areaColor: '#2B91B7'
}
},
animation: false,
data: data
}
]
};
myChart.setOption(option);
}
实现效果
下一篇中,我们将实现根据项目,用一个符号通过大小变换,显示项目数量的多少。