一、npm安装组件:
- "echarts": "5.4.0",
- "echarts-gl": "^2.0.9",
- "element-china-area-data": "^5.0.2",
二、Vue页面
- <template>
- <div class="Map3D" id="Map3D" ref="Map3D" @click="toBack"></div>
- </template>
-
- <script>
- import LongNanJson from '../../../public/static/city/longnan.json';
- import axios from 'axios';
- import {TextToCode} from "element-china-area-data";
- import 'echarts-gl'
-
- export default {
- data() {
- return {
- chartMap: {},
- option: null,
- };
- },
- props: {},
- created() {
- },
- mounted() {
- this.$nextTick(() => {
- this.initMap();
- });
- window.addEventListener('resize', this.resize)
- },
-
- beforeDestroy() {
- if (!this.chartMap) {
- return
- }
- this.chartMap.dispose()
- this.chartMap = null
- window.removeEventListener('resize', this.resize)
- },
- methods: {
- // 初始化地图
- initMap() {
- this.chartMap = this.$echarts.init(document.querySelector('.Map3D'));
- this.chartMap = this.$echarts.init(this.$refs.Map3D);
- this.$echarts.registerMap('LongNan', LongNanJson)
- this.option = {
- series: [
- {
- type: 'map3D',
- name: '地图',
- selectedMode: 'single', // 地图高亮单选
- regionHeight: 5, // 地图高度
- map: 'LongNan',
- viewControl: {
- distance: 120, // 地图视角 控制初始大小
- alpha: 50,// 倾斜角度
- rotateSensitivity: [1, 1]
- },
- label: {
- show: true, // 是否显示名字
- color: '#fff', // 文字颜色
- fontSize: 18, // 文字大小
- fontWeight: 'bold', // 文字大小
- },
- itemStyle: {
- color: '#224a7b', // 地图背景颜色
- borderWidth: 1, // 分界线width
- borderColor: '#207fce', // 分界线颜色
- opacity: 0.72
- },
- emphasis: {
- label: {
- show: true, // 是否显示高亮
- textStyle: {
- color: 'yellow' // 高亮文字颜色
- }
- },
- itemStyle: {
- color: '#007ee8', // 地图高亮颜色
- borderColor: '#6becf5'// 分界线颜色
- }
- },
- light: {
- main: {
- color: '#fff',
- intensity: 1,
- shadow: true,
- shadowQuality: 'high',
- alpha: 25, //
- beta: 20
- },
- ambient: {
- color: '#fff',
- intensity: 0.6
- }
- }
- }
- ]
- };
- this.chartMap.setOption(this.option)
- this.chartMap.on('click', (param) => {
- event.stopPropagation() // 阻止冒泡
- if (param.name) {
- const areaCode = TextToCode['甘肃省']['陇南市'][param.name].code;
- this.getCountyOption(areaCode)
- }
- });
- },
- // 显示各区县地图
- getCountyOption(areaCode) {
- axios.get('static/county/' + areaCode + '.json').then((result) => {
- this.$echarts.registerMap(areaCode, result.data)
- this.option.series[0].map = areaCode
- this.chartMap.setOption(this.option, true);
- });
- },
- // 点击页面, 返回显示中国地图
- toBack() {
- this.$echarts.registerMap('LongNan', LongNanJson)
- this.option.series[0].map = 'LongNan'
- this.chartMap.setOption(this.option, true);
- },
-
- resize() {
- this.chartMap.resize()
- },
- },
- };
- </script>
-
- <style lang="scss" scoped>
- .Map3D {
- width: 100%;
- height: 100%;
- }
- </style>
