提交 73ceca74 authored 作者: fit2cloud-chenyw's avatar fit2cloud-chenyw

feat: 地图增加缩放重置按钮

上级 e069f2d0
<template> <template>
<div style="display: flex;"> <div style="display: flex;">
<view-track-bar ref="viewTrack" :track-menu="trackMenu" class="track-bar" :style="trackBarStyleTime" @trackClick="trackClick" /> <view-track-bar
ref="viewTrack"
:track-menu="trackMenu"
class="track-bar"
:style="trackBarStyleTime"
@trackClick="trackClick"
/>
<div :id="chartId" style="width: 100%;height: 100%;overflow: hidden;" :style="{ borderRadius: borderRadius}" /> <div :id="chartId" style="width: 100%;height: 100%;overflow: hidden;" :style="{ borderRadius: borderRadius}" />
<div v-if="chart.type === 'map'" class="map-zoom-box">
<div style="margin-bottom: 20px;">
<el-button size="mini" icon="el-icon-plus" circle @click="roamMap(true)" />
</div>
<div style="margin-bottom: 20px;">
<el-button size="mini" icon="el-icon-refresh" circle @click="resetZoom()" />
</div>
<div>
<el-button size="mini" icon="el-icon-minus" circle @click="roamMap(false)" />
</div>
</div>
</div> </div>
</template> </template>
...@@ -19,24 +39,55 @@ import { ...@@ -19,24 +39,55 @@ import {
BASE_TREEMAP, BASE_TREEMAP,
BASE_MIX BASE_MIX
} from '../chart/chart' } from '../chart/chart'
import { baseBarOption, stackBarOption, horizontalBarOption, horizontalStackBarOption } from '../chart/bar/bar' import {
import { baseLineOption, stackLineOption } from '../chart/line/line' baseBarOption,
import { basePieOption, rosePieOption } from '../chart/pie/pie' stackBarOption,
import { baseMapOption } from '../chart/map/map' horizontalBarOption,
import { baseFunnelOption } from '../chart/funnel/funnel' horizontalStackBarOption
import { baseRadarOption } from '../chart/radar/radar' } from '../chart/bar/bar'
import { baseGaugeOption } from '../chart/gauge/gauge' import {
import { baseScatterOption } from '../chart/scatter/scatter' baseLineOption,
import { baseTreemapOption } from '../chart/treemap/treemap' stackLineOption
import { baseMixOption } from '@/views/chart/chart/mix/mix' } from '../chart/line/line'
// import eventBus from '@/components/canvas/utils/eventBus' import {
import { uuid } from 'vue-uuid' basePieOption,
import { geoJson } from '@/api/map/map' rosePieOption
} from '../chart/pie/pie'
import {
baseMapOption
} from '../chart/map/map'
import {
baseFunnelOption
} from '../chart/funnel/funnel'
import {
baseRadarOption
} from '../chart/radar/radar'
import {
baseGaugeOption
} from '../chart/gauge/gauge'
import {
baseScatterOption
} from '../chart/scatter/scatter'
import {
baseTreemapOption
} from '../chart/treemap/treemap'
import {
baseMixOption
} from '@/views/chart/chart/mix/mix'
// import eventBus from '@/components/canvas/utils/eventBus'
import {
uuid
} from 'vue-uuid'
import {
geoJson
} from '@/api/map/map'
import ViewTrackBar from '@/components/canvas/components/Editor/ViewTrackBar' import ViewTrackBar from '@/components/canvas/components/Editor/ViewTrackBar'
export default { export default {
name: 'ChartComponent', name: 'ChartComponent',
components: { ViewTrackBar }, components: {
ViewTrackBar
},
props: { props: {
chart: { chart: {
type: Object, type: Object,
...@@ -110,7 +161,9 @@ export default { ...@@ -110,7 +161,9 @@ export default {
// 基于准备好的dom,初始化echarts实例 // 基于准备好的dom,初始化echarts实例
// 渲染echart等待dom加载完毕,渲染之前先尝试销毁具有相同id的echart 放置多次切换仪表板有重复id情况 // 渲染echart等待dom加载完毕,渲染之前先尝试销毁具有相同id的echart 放置多次切换仪表板有重复id情况
const that = this const that = this
new Promise((resolve) => { resolve() }).then(() => { new Promise((resolve) => {
resolve()
}).then(() => {
// 此dom为echarts图标展示dom // 此dom为echarts图标展示dom
this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId)) this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId))
if (!this.myChart) { if (!this.myChart) {
...@@ -193,25 +246,25 @@ export default { ...@@ -193,25 +246,25 @@ export default {
}, },
registerDynamicMap(areaCode) { registerDynamicMap(areaCode) {
this.dynamicAreaCode = areaCode this.dynamicAreaCode = areaCode
// if (this.$store.getters.geoMap[areaCode]) { // if (this.$store.getters.geoMap[areaCode]) {
// const json = this.$store.getters.geoMap[areaCode] // const json = this.$store.getters.geoMap[areaCode]
// this.myChart.dispose() // this.myChart.dispose()
// this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId)) // this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId))
// this.$echarts.registerMap('MAP', json) // this.$echarts.registerMap('MAP', json)
// return // return
// } // }
// geoJson(areaCode).then(res => { // geoJson(areaCode).then(res => {
// this.$store.dispatch('map/setGeo', { // this.$store.dispatch('map/setGeo', {
// key: areaCode, // key: areaCode,
// value: res // value: res
// }).then(() => { // }).then(() => {
// this.myChart.dispose() // this.myChart.dispose()
// this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId)) // this.myChart = this.$echarts.getInstanceByDom(document.getElementById(this.chartId))
// this.$echarts.registerMap('MAP', res) // this.$echarts.registerMap('MAP', res)
// }) // })
// }).catch(() => { // }).catch(() => {
// this.downOrUp = true // this.downOrUp = true
// }) // })
}, },
initMapChart(geoJson, chart) { initMapChart(geoJson, chart) {
...@@ -284,11 +337,39 @@ export default { ...@@ -284,11 +337,39 @@ export default {
default: default:
break break
} }
},
roamMap(flag) {
let targetZoom = 1
const zoom = this.myChart.getOption().series[0].zoom
if (flag) {
targetZoom = zoom * 1.2
} else {
targetZoom = zoom / 1.2
}
const options = JSON.parse(JSON.stringify(this.myChart.getOption()))
options.series[0].zoom = targetZoom
this.myChart.setOption(options)
},
resetZoom() {
const options = JSON.parse(JSON.stringify(this.myChart.getOption()))
options.series[0].zoom = 1
this.myChart.setOption(options)
} }
} }
} }
</script> </script>
<style scoped> <style scoped>
.map-zoom-box {
position: absolute;
z-index: 999;
right: 2%;
top: 5%;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
text-align: center;
padding: 5px;
border-radius: 5px
}
</style> </style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论