|
@@ -1,12 +1,14 @@
|
|
import * as echarts from 'echarts';
|
|
import * as echarts from 'echarts';
|
|
import styles from './mapComponent.less';
|
|
import styles from './mapComponent.less';
|
|
import React, { useEffect, useRef } from 'react';
|
|
import React, { useEffect, useRef } from 'react';
|
|
|
|
+import { queryMapJson } from '@/services/dataBoardService';
|
|
|
|
+import { message } from 'antd';
|
|
|
|
|
|
interface propsData {
|
|
interface propsData {
|
|
userData: number;
|
|
userData: number;
|
|
deviceData: number;
|
|
deviceData: number;
|
|
areaList: any;
|
|
areaList: any;
|
|
- mapData: any;
|
|
|
|
|
|
+ // mapData: any;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -15,7 +17,7 @@ interface propsData {
|
|
*/
|
|
*/
|
|
const MapComponent: React.FC<propsData> = (props) => {
|
|
const MapComponent: React.FC<propsData> = (props) => {
|
|
const chartRef: any = useRef();
|
|
const chartRef: any = useRef();
|
|
- const { userData, deviceData, areaList, mapData } = props;
|
|
|
|
|
|
+ const { userData, deviceData, areaList } = props;
|
|
const geoCoordMap = {
|
|
const geoCoordMap = {
|
|
济南市: [117, 36.65],
|
|
济南市: [117, 36.65],
|
|
青岛市: [120.33, 36.07],
|
|
青岛市: [120.33, 36.07],
|
|
@@ -53,63 +55,73 @@ const MapComponent: React.FC<propsData> = (props) => {
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
// 初始化统计图对象
|
|
// 初始化统计图对象
|
|
const myChart = echarts.init(chartRef.current);
|
|
const myChart = echarts.init(chartRef.current);
|
|
- if (mapData && mapData.map_json) {
|
|
|
|
- const data = JSON.parse(mapData.map_json);
|
|
|
|
- echarts.registerMap('map', data);
|
|
|
|
- const options = {
|
|
|
|
- geo: {
|
|
|
|
- show: true,
|
|
|
|
|
|
+ const options = {
|
|
|
|
+ geo: {
|
|
|
|
+ show: true,
|
|
|
|
+ map: 'map',
|
|
|
|
+ roam: false,
|
|
|
|
+ zoom: 1.2,
|
|
|
|
+ label: {
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ areaColor: '#091632',
|
|
|
|
+ borderColor: '#1773c3',
|
|
|
|
+ shadowColor: '#1773c3',
|
|
|
|
+ shadowBlur: 20,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ series: [
|
|
|
|
+ {
|
|
|
|
+ name: 'light',
|
|
|
|
+ type: 'scatter',
|
|
|
|
+ coordinateSystem: 'geo',
|
|
|
|
+ data: convertData(areaList),
|
|
|
|
+ symbolSize: function (val: number[]) {
|
|
|
|
+ return val[2];
|
|
|
|
+ },
|
|
|
|
+ label: {
|
|
|
|
+ formatter: '{b}',
|
|
|
|
+ position: 'right',
|
|
|
|
+ show: true,
|
|
|
|
+ },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#ddb926',
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ type: 'map',
|
|
map: 'map',
|
|
map: 'map',
|
|
- roam: false,
|
|
|
|
zoom: 1.2,
|
|
zoom: 1.2,
|
|
label: {
|
|
label: {
|
|
show: false,
|
|
show: false,
|
|
|
|
+ color: '#fff',
|
|
},
|
|
},
|
|
|
|
+ roam: false,
|
|
itemStyle: {
|
|
itemStyle: {
|
|
- areaColor: '#091632',
|
|
|
|
- borderColor: '#1773c3',
|
|
|
|
- shadowColor: '#1773c3',
|
|
|
|
- shadowBlur: 20,
|
|
|
|
|
|
+ areaColor: '#031525',
|
|
|
|
+ borderColor: '#3B5077',
|
|
|
|
+ borderWidth: 1,
|
|
},
|
|
},
|
|
|
|
+ data: [],
|
|
},
|
|
},
|
|
- series: [
|
|
|
|
- {
|
|
|
|
- name: 'light',
|
|
|
|
- type: 'scatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: convertData(areaList),
|
|
|
|
- symbolSize: function (val: number[]) {
|
|
|
|
- return val[2];
|
|
|
|
- },
|
|
|
|
- label: {
|
|
|
|
- formatter: '{b}',
|
|
|
|
- position: 'right',
|
|
|
|
- show: true,
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- color: '#ddb926',
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- type: 'map',
|
|
|
|
- map: 'map',
|
|
|
|
- zoom: 1.2,
|
|
|
|
- label: {
|
|
|
|
- show: false,
|
|
|
|
- color: '#fff',
|
|
|
|
- },
|
|
|
|
- roam: false,
|
|
|
|
- itemStyle: {
|
|
|
|
- areaColor: '#031525',
|
|
|
|
- borderColor: '#3B5077',
|
|
|
|
- borderWidth: 1,
|
|
|
|
- },
|
|
|
|
- data: [],
|
|
|
|
- },
|
|
|
|
- ],
|
|
|
|
- };
|
|
|
|
- myChart.setOption(options);
|
|
|
|
- }
|
|
|
|
|
|
+ ],
|
|
|
|
+ };
|
|
|
|
+ queryMapJson()
|
|
|
|
+ .then((res) => {
|
|
|
|
+ if (res && res.code === 0) {
|
|
|
|
+ const data = JSON.parse(res.data.map_json);
|
|
|
|
+ if (data) {
|
|
|
|
+ echarts.registerMap('map', data);
|
|
|
|
+ }
|
|
|
|
+ myChart.setOption(options);
|
|
|
|
+ } else {
|
|
|
|
+ message.error(res?.message);
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch((e) => {
|
|
|
|
+ message.error(e?.message);
|
|
|
|
+ });
|
|
// 组件卸载
|
|
// 组件卸载
|
|
return () => {
|
|
return () => {
|
|
myChart.clear();
|
|
myChart.clear();
|