實現步驟
1.下載地圖json數據到項目中,我的地圖下載地址
http://datav.aliyun.com/tools/atlas/#&lat=30.316551722910077&lng=106.68898666525287&zoom=3.5
2.在項目中引入
import xilinguole from '@/utils/map/xilinguole.json' // 有子級區域
3.提供echarts展示的DOM元素,注冊地圖
<template>
<div class="container">
<div id="lineChart" style="height:500px"></div>
</div>
</template>
<script>
import xilinguole from '@/utils/map/xilinguole.json' // 有下級區域
// import xilinguole from '@/utils/map/xilinguo2.json' // 無下級區域
export default {
name: 'effectScatter',
data() {
return {
option: {
tooltip: {},
geo: {
map: 'city',
zoom: 1.2,
roam: true,
itemStyle: {
areaColor: '#4474ec', // 區域顏色
borderColor: '#fff' // 區域邊線顏色
},
label: {
show: true // 是否展示名稱
},
emphasis: {
label: {
// show: false
},
itemStyle: {
areaColor: '#4474ec', // 高亮時區域顏色
}
}
}
},
mapChart: ''
}
},
mounted() {
this.getMapChart()
},
methods: {
// echarts初始化
getMapChart() {
this.mapChart = this.$echart.init(document.getElementById('lineChart'))
this.$echart.registerMap('city', xilinguole);
this.mapChart.setOption(this.option)
}
}
}
</script>
4.完成第三步就能在頁面中看到地圖了
5.增加漣漪效果, data中value數據的坐標就是下載的地圖json數據中的center數值
series: [ { // 漣漪效果 name: 'Top 6', type: 'effectScatter', coordinateSystem: 'geo', // 該系列使用的坐標系 data: [{ // 數據映射 name: "蘇尼特左旗", // 對應地圖中的name value: [113.653412, 43.854108, 4500] // value值,前面兩個是X軸,Y軸坐標, 后面的數據自定義,可以設置多個 }, { name: "二連浩特市", value: [111.97981, 43.652895, 3560] }, { name: "阿巴嘎旗", value: [114.970618, 44.022728, 3300] }, { name: "蘇尼特右旗", value: [112.65539, 42.746662, 2800] }, { name: "正鑲白旗", value: [115.031423, 42.286807, 2100] }, { name: "太仆寺旗", value: [115.28728, 41.895199, 1900] } ], symbolSize: function (val) { // 漣漪圖大小 val就是data中value數組 return val[2] / 200; }, encode: { value: 2 // 可以定義 data 的哪個維度被編碼成什么.這里的意思是把data數據的第2項(從0開始)編譯為value }, showEffectOn: 'render', // 配置何時顯示特效 rippleEffect: { brushType: 'stroke', color: 'red' }, emphasis: { scale: false }, label: { formatter: '{b}', position: 'right', show: false }, itemStyle: { shadowBlur: 10, shadowColor: 'rgba(230, 10, 10, 1)', color: 'red' }, zlevel: 1 } ]
6.這樣就完成一個漣漪效果的地圖了,以官網的地圖為例,
https://echarts.apache.org/examples/zh/editor.html?c=effectScatter-bmap看一下配置對應的效果
完整代碼:
<template>
<div class="container">
<div id="lineChart" style="height:500px"></div>
</div>
</template>
<script>
import xilinguole from '@/utils/map/xilinguole.json' // 有下級區域
// import xilinguole from '@/utils/map/xilinguo2.json' // 無下級區域
export default {
name: 'effectScatter',
data() {
return {
option: {
tooltip: {},
geo: {
map: 'city',
zoom: 1.2,
roam: true,
itemStyle: {
areaColor: '#4474ec',
borderColor: '#fff'
},
label: {
show: true
},
emphasis: {
label: {
// show: false
},
itemStyle: {
areaColor: '#4474ec',
}
}
},
series: [
{ // 漣漪效果
name: 'Top 6',
type: 'effectScatter',
coordinateSystem: 'geo',
data: [{
name: "蘇尼特左旗",
value: [113.653412, 43.854108, 4500]
},
{
name: "二連浩特市",
value: [111.97981, 43.652895, 3560]
},
{
name: "阿巴嘎旗",
value: [114.970618, 44.022728, 3300]
},
{
name: "蘇尼特右旗",
value: [112.65539, 42.746662, 2800]
},
{
name: "正鑲白旗",
value: [115.031423, 42.286807, 2100]
},
{
name: "太仆寺旗",
value: [115.28728, 41.895199, 1900]
}
],
symbolSize: function (val) {
return val[2] / 200;
},
encode: {
value: 2
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke',
color: 'red'
},
emphasis: {
scale: false
},
label: {
formatter: '{b}',
position: 'right',
show: false
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(230, 10, 10, 1)',
color: 'red'
},
zlevel: 1
}
]
},
mapChart: ''
}
},
mounted() {
this.getMapChart()
},
methods: {
// echarts初始化
getMapChart() {
this.mapChart = this.$echart.init(document.getElementById('lineChart'))
this.$echart.registerMap('city', xilinguole);
this.mapChart.setOption(this.option)
}
}
}
</script>
