<template>
<div class="map-chart">
<v-echarts autoresize :options="mapOpt" style="width:100%;height:100%;" />
<img ref="dot" hidden src="../../../assets/images/equipment/dot1.png">
<img ref="dot2" hidden src="../../../assets/images/equipment/dot2.png">
</div>
</template>
<script>
import 'echarts/map/js/china'
import vEcharts from 'vue-echarts/components/ECharts'
export default {
components: {
vEcharts
},
props: {
mapdata: { default: function() {
return []
}, type: Array }
},
data: function() {
return {
mapOpt: {},
mapObj: null
}
},
computed: {
theme() {
return this.$store.state.app.theme
}
},
watch: {
theme(newVal, oldVal) {
// 切换地图相关颜色 switch map color
if (newVal === 'dark') {
this.mapOpt.geo.itemStyle.normal.areaColor = 'rgba(225,233,240,0.13)'// '#E1E9F022'
// this.mapOpt.geo.itemStyle.normal.areaColor.image = this.$refs.dot2
this.mapOpt.geo.itemStyle.normal.borderColor = '#2e8492'
} else {
this.mapOpt.geo.itemStyle.normal.areaColor = 'rgba(225,233,240,0.13)'// '#E1E9F022'
// this.mapOpt.geo.itemStyle.normal.areaColor.image = this.$refs.dot
this.mapOpt.geo.itemStyle.normal.borderColor = '#b6d1e8'
}
}
},
mounted: function() {
this.setMapOpt()
},
methods: {
setMapOpt() {
this.mapOpt = {
grid: {
right: '1%',
top: '15%',
bottom: '10%',
width: '20%'
},
tooltip: {
trigger: 'item' // hover触发器
},
geo: {
map: 'china',
show: true,
silent: true,
roam: true,
zoom: 1.2,
center: [107, 36],
label: {
emphasis: {
show: false
}
},
itemStyle: {
normal: {
borderColor: this.theme === 'dark' ? '#2e8492' : '#b6d1e8',
borderWidth: 3,
borderType: 'doted',
// // 纹理填充
// areaColor:{
// image: this.theme === 'dark' ? this.$refs.dot2 : this.$refs.dot, // 支持为 HTMLImageElement, HTMLCanvasElement,不支持路径字符串
// repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'
// },
areaColor: 'rgba(225,233,240,0.13)' // 颜色填充
// shadowColor: 'rgba(255, 255, 255, 1)',
// shadowOffsetX: -1,
// shadowOffsetY: 1,
// shadowBlur: 1
}
// emphasis: {
// areaColor: '#389BB7',
// borderWidth: 0
// }
}
},
series: [{
// 文字和标志
name: 'light',
type: 'scatter',
coordinateSystem: 'geo',
data: this.mapdata,
symbolSize: 15,
tooltip: {
trigger: 'item',
formatter: function(params, ticket, callback) {
return '名称:' + params.data.name + '<br/>' + '序列号:' + params.data.code
}
},
label: {
normal: {
show: false
},
emphasis: {
show: false
}
},
itemStyle: {
normal: {
color: 'rgba(48, 159, 251, 0.2)', // '#309FFB33',
borderColor: '#309FFB'
}
}
}]
}
}
}
}
</script>
<style scoped lang="scss">
.dark-theme{
.map-chart{
background:$dark_bg;
box-shadow: 1px 1px 5px 0px #0e323b;
}
}
.map-chart{
width:100%;
height:100%;
background: $bg;
box-shadow: 1px 1px 5px 0px #dedede;
border-radius: 10px;
}
</style>