先看效果展示图
目录
每部分的源码在文章最后的链接中
准备工作
不知道或者不熟悉的可以去官网看看: 点击前往Echarts官网
各个省、市、县的地图json下载,点击前往
插件下载
npm i echarts --save // 我的版本 ^5.2.0
一, 绘制3D地图
这种3D效果其实多层map对象集合组成的,通常在option里面的geo中
html
<div class="about">
<div id="myMap"></div>
</div>
option配置项
option里面的控制3D效果的主要是这个geo模块,里面5个对象表示5层地图,层数越多,就越立体,一般三五层就差不多了,每个都偏移了一点点,从而形成的3D立体效果
optionMap: {
....
geo: [
{
map: 'china',
aspectScale: 1,
zoom: 0.9,
layoutCenter: ['50%', '50%'],
layoutSize: '100%',
show: true,
roam: false,
label: {
show: false, // 各个省市县的名字
color: '#fff',
},
itemStyle: {
// 每块的样式
areaColor: {
type: 'linear',
x: 1200,
y: 0,
x2: 0,
y2: 0,
colorStops: [
{
offset: 0,
color: 'rgba(3,27,78,0.75)',
},
{
offset: 1,
color: 'rgba(58,149,253,0.75)',
},
],
global: true, // 缺省为 false
},
borderColor: '#c0f3fb',
borderWidth: 0.8,
},
emphasis: {
itemStyle: {
show: false,
color: '#fff',
areaColor: 'rgba(0,254,233,0.6)',
},
label: {
show: true,
color: '#fff',
},
},
},
// 重影
{
type: 'map',
map: 'china',
zlevel: -1,
aspectScale: 1,
zoom: 0.9,
layoutCenter: ['50%', '51%'],
layoutSize: '100%',
roam: false,
silent: true,
itemStyle: {
borderWidth: 1,
borderColor: 'rgba(58,149,253,0.8)',
shadowColor: 'rgba(172, 122, 255,0.5)',
shadowOffsetY: 5,
shadowBlur: 15,
areaColor: 'rgba(5,21,35,0.1)',
},
},
{
type: 'map',
map: 'china',
zlevel: -2,
aspectScale: 1,
zoom: 0.9,
layoutCenter: ['50%', '52%'],
layoutSize: '100%',
roam: false,
silent: true,
itemStyle: {
borderWidth: 1,
borderColor: 'rgba(58,149,253,0.6)',
shadowColor: 'rgba(65, 214, 255,0.6)',
shadowOffsetY: 5,
shadowBlur: 15,
areaColor: 'rgba(5,21,35,0.1)',
},
},
{
type: 'map',
map: 'china',
zlevel: -3,
aspectScale: 1,
zoom: 0.9,
layoutCenter: ['50%', '53%'],
layoutSize: '100%',
roam: false,
silent: true,
itemStyle: {
borderWidth: 1,
borderColor: 'rgba(58,149,253,0.4)',
shadowColor: 'rgba(29, 111, 165,1)',
shadowOffsetY: 15,
shadowBlur: 10,
areaColor: 'rgba(5,21,35,0.1)',
},
},
{
type: 'map',
map: 'china',
zlevel: -4,
aspectScale: 1,
zoom: 0.9,
layoutCenter: ['50%', '54%'],
layoutSize: '100%',
roam: false,
silent: true,
itemStyle: {
borderWidth: 5,
borderColor: 'rgba(5,9,57,0.8)',
shadowColor: 'rgba(29, 111, 165,0.8)',
shadowOffsetY: 15,
shadowBlur: 10,
areaColor: 'rgba(5,21,35,0.1)',
},
},