ECharts 是一个使用 JavaScript 实现的开源可视化库,可以用于绘制各种图表,包括地图图表。对于新手来说,使用 ECharts 绘制地图图表可能有些挑战,但不用担心,以下将为你提供20个实用案例,帮助你快速上手。
1. 中国地图基础绘制
首先,我们需要准备一个地图数据文件,通常是一个 GeoJSON 格式的文件。以下是一个简单的例子:
var geoCoordMap = {
'海门': [121.15, 31.89],
'临海': [121.13, 28.37]
};
var option = {
title: {
text: '中国地图基础绘制',
subtext: '数据纯属虚构'
},
tooltip: {
trigger: 'item'
},
bmap: {
center: [104.114129, 37.550339],
zoom: 5,
roam: true,
mapStyle: {
styleJson: [{
"featureType": "water",
"elementType": "all",
"stylers": {
"color": "#044161"
}
}, {
"featureType": "land",
"elementType": "all",
"stylers": {
"color": "#004981"
}
}, {
"featureType": "boundary",
"elementType": "all",
"stylers": {
"color": "#064f85"
}
}, {
"featureType": "railway",
"elementType": "all",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "highway",
"elementType": "all",
"stylers": {
"color": "#004981"
}
}, {
"featureType": "highway",
"elementType": "labels",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "arterial",
"elementType": "labels",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "green",
"elementType": "all",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "subway",
"elementType": "all",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "manmade",
"elementType": "all",
"stylers": {
"color": "#00508b"
}
}, {
"featureType": "local",
"elementType": "all",
"stylers": {
"color": "#034e63"
}
}, {
"featureType": "arterial",
"elementType": "labels",
"stylers": {
"visibility": "off"
}
}, {
"featureType": "boundary",
"elementType": "all",
"stylers": {
"color": "#003082"
}
}, {
"featureType": "building",
"elementType": "all",
"stylers": {
"color": "#1a5787"
}
}, {
"featureType": "label",
"elementType": "all",
"stylers": {
"visibility": "off"
}
}]
}
},
series: [
{
name: '数据',
type: 'map',
mapType: 'china',
data: [
{name: '海门', value: Math.round(Math.random() * 1000)},
{name: '临海', value: Math.round(Math.random() * 1000)}
],
markPoint: {
symbolSize: 50,
data: [
{name: '海门', value: 90},
{name: '临海', value: 50}
]
},
label: {
normal: {
show: true
},
emphasis: {
show: true
}
},
itemStyle: {
normal: {
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: {
areaColor: '#2a333d'
}
}
}
]
};
2. 省份地图绘制
与基础绘制类似,只需要将 mapType 属性改为省份名称即可。以下是一个河南省的例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
]
}
]
3. 地图热力图
使用 heatmap 属性可以绘制地图热力图。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
heatmap: {
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
]
}
}
]
4. 地图标签
使用 label 属性可以为地图添加标签。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
label: {
normal: {
show: true,
formatter: '{b}'
}
}
}
]
5. 地图缩放
使用 roam 属性可以控制地图的缩放。以下是一个例子:
bmap: {
roam: true
}
6. 地图样式
使用 mapStyle 属性可以自定义地图样式。以下是一个例子:
bmap: {
mapStyle: {
styleJson: [{
"featureType": "water",
"elementType": "all",
"stylers": {
"color": "#044161"
}
}]
}
}
7. 地图标记
使用 markPoint 属性可以为地图添加标记。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPoint: {
symbolSize: 50,
data: [
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
}
}
]
8. 地图多边形
使用 markPolygon 属性可以为地图添加多边形。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPolygon: {
data: [
[
[113.649, 34.756],
[113.649, 34.756],
[113.649, 34.756]
]
]
}
}
]
9. 地图文本
使用 markText 属性可以为地图添加文本。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markText: {
data: [
{name: '郑州', value: '郑州'},
{name: '洛阳', value: '洛阳'}
]
}
}
]
10. 地图连接线
使用 markLine 属性可以为地图添加连接线。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markLine: {
data: [
[
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
]
}
}
]
11. 地图自定义点
使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPoint: {
symbolSize: 50,
data: [
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
}
}
]
12. 地图自定义多边形
使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPolygon: {
data: [
[
[113.649, 34.756],
[113.649, 34.756],
[113.649, 34.756]
]
]
}
}
]
13. 地图自定义文本
使用 markText 属性可以为地图添加自定义文本。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markText: {
data: [
{name: '郑州', value: '郑州'},
{name: '洛阳', value: '洛阳'}
]
}
}
]
14. 地图自定义连接线
使用 markLine 属性可以为地图添加自定义连接线。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markLine: {
data: [
[
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
]
}
}
]
15. 地图自定义点
使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPoint: {
symbolSize: 50,
data: [
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
}
}
]
16. 地图自定义多边形
使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPolygon: {
data: [
[
[113.649, 34.756],
[113.649, 34.756],
[113.649, 34.756]
]
]
}
}
]
17. 地图自定义文本
使用 markText 属性可以为地图添加自定义文本。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markText: {
data: [
{name: '郑州', value: '郑州'},
{name: '洛阳', value: '洛阳'}
]
}
}
]
18. 地图自定义连接线
使用 markLine 属性可以为地图添加自定义连接线。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markLine: {
data: [
[
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
]
}
}
]
19. 地图自定义点
使用 markPoint 属性可以为地图添加自定义点。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPoint: {
symbolSize: 50,
data: [
{name: '郑州', value: 90},
{name: '洛阳', value: 50}
]
}
}
]
20. 地图自定义多边形
使用 markPolygon 属性可以为地图添加自定义多边形。以下是一个例子:
series: [
{
name: '数据',
type: 'map',
mapType: '河南',
data: [
{name: '郑州', value: Math.round(Math.random() * 1000)},
{name: '洛阳', value: Math.round(Math.random() * 1000)}
],
markPolygon: {
data: [
[
[113.649, 34.756],
[113.649, 34.756],
[113.649, 34.756]
]
]
}
}
]
以上是20个ECharts地图图表的实用案例,希望对你有所帮助。在实际应用中,可以根据自己的需求进行修改和扩展。祝你学习愉快!