| | |
| | | <template> |
| | | <SatelliteMixTool :group-id="3"></SatelliteMixTool> |
| | | |
| | | <el-row class="wrap"> |
| | | <el-col span="2"> |
| | | <!-- <div class="p-events-auto"> |
| | |
| | | </el-row> |
| | | <SatelliteDataMix class="data-mix" @mix-data="handleMixDataClick"> |
| | | </SatelliteDataMix> |
| | | <SatelliteMixTool :group-id="3"></SatelliteMixTool> |
| | | |
| | | <!-- <el-row class="historical" justify="center"> |
| | | <SatelliteAnimation |
| | |
| | | import SatelliteManage from './component/SatelliteManage.vue'; |
| | | import SatelliteDataMix from './component/SatelliteDataMix.vue'; |
| | | import SatelliteMixTool from './component/SatelliteMixTool.vue'; |
| | | import SatelliteProxy from './SatelliteProxy'; |
| | | import { SatelliteProxy } from './SatelliteProxy'; |
| | | import { useFetchData } from '@/composables/fetchData'; |
| | | import { useSatelliteGridStore } from '@/stores/satellite-grid'; |
| | | import { useSceneStore } from '@/stores/scene'; |
| | | |
| | | const satelliteProxy = new SatelliteProxy(); |
| | | |
| | | const satelliteGridStore = useSatelliteGridStore(); |
| | | const { loading, fetchData } = useFetchData(10000); |
| | |
| | | // 网格数据详情 |
| | | const gridDataDetailMap = new Map(); |
| | | const gridDataDetailList = ref([]); |
| | | // 地图网格相关对象 |
| | | let mapViews; |
| | | |
| | | // 查询网格信息和遥感数据组 |
| | | function onSearch(options) { |
| | | satelliteGridStore.fetchGridCell(options.id).then(() => { |
| | | SatelliteProxy.clearText(mapViews); |
| | | drawGrid(satelliteGridStore.gridInfo); |
| | | // initDistrict(); |
| | | SatelliteProxy.drawDistrict('长宁区'); |
| | | prepareGrid(satelliteGridStore.gridInfo); |
| | | satelliteProxy.drawDistrict('长宁区'); |
| | | }); |
| | | satelliteGridStore.fetchGridData(options.id).then(() => { |
| | | max = satelliteGridStore.gridDataList.length; |
| | |
| | | } |
| | | } |
| | | |
| | | function drawGrid(gridInfo) { |
| | | SatelliteProxy.clearAll(mapViews); |
| | | mapViews = SatelliteProxy.drawPolyline(gridInfo, (polygon) => { |
| | | function prepareGrid(gridInfo) { |
| | | satelliteProxy.gridPrepare(gridInfo, (polygon) => { |
| | | //鼠标移入事件 |
| | | polygon.on('mouseover', () => { |
| | | polygon.setOptions({ |
| | |
| | | }); |
| | | } |
| | | |
| | | // 绘制网格遥感数据值和网格颜色 |
| | | function drawTextAndColor(gridData) { |
| | | // SatelliteProxy.clearText(mapViews); |
| | | const { resGridViews, pointsRes } = SatelliteProxy.drawColor({ |
| | | gridViews: mapViews.gridViews, |
| | | points: mapViews.points, |
| | | gridDataDetail: gridData, |
| | | lastGridViews: mapViews.lastGridViews |
| | | }); |
| | | mapViews.lastGridViews = resGridViews; |
| | | mapViews.lastPoints = pointsRes; |
| | | // 文本标记 |
| | | const { textViews: dataTxt, labelsLayer: dataLayer } = |
| | | SatelliteProxy.drawDataText( |
| | | mapViews.lastPoints, |
| | | gridData, |
| | | mapViews.dataTxt, |
| | | mapViews.dataLayer |
| | | ); |
| | | mapViews.dataTxt = dataTxt; |
| | | mapViews.dataLayer = dataLayer; |
| | | const { textViews: rankTxt, labelsLayer: rankLayer } = |
| | | SatelliteProxy.drawRankText( |
| | | mapViews.lastPoints, |
| | | gridData, |
| | | mapViews.rankTxt, |
| | | mapViews.rankLayer |
| | | ); |
| | | mapViews.rankTxt = rankTxt; |
| | | mapViews.rankLayer = rankLayer; |
| | | function drawGrid(gridData) { |
| | | satelliteProxy.drawGrid({ gridData }); |
| | | } |
| | | |
| | | let selectedGridData; |
| | | function handleRowClick(row) { |
| | | if (gridDataDetailMap.has(row.id)) { |
| | | const gridData = gridDataDetailMap.get(row.id); |
| | | selectedGridData = gridData; |
| | | drawTextAndColor(gridData); |
| | | } else { |
| | | gridApi.fetchGridDataDetail(row.id, row.groupId).then((res) => { |
| | | gridDataDetailMap.set(row.id, res.data); |
| | | const gridData = res.data; |
| | | selectedGridData = gridData; |
| | | drawTextAndColor(gridData); |
| | | }); |
| | | } |
| | | satelliteGridStore.fetchGridDataDetail(row, drawGrid); |
| | | } |
| | | |
| | | function handleRankClick(rankVisible) { |
| | | // rankVisible ? map.add(mapViews.rankLayer) : map.remove(mapViews.rankLayer); |
| | | rankVisible ? map.add(mapViews.rankTxt) : map.remove(mapViews.rankTxt); |
| | | satelliteProxy.changeVisibility({ showRankTxt: rankVisible }); |
| | | } |
| | | |
| | | function handleDataClick(dataVisible) { |
| | | // dataVisible ? map.add(mapViews.dataLayer) : map.remove(mapViews.dataLayer); |
| | | dataVisible ? map.add(mapViews.dataTxt) : map.remove(mapViews.dataTxt); |
| | | satelliteProxy.changeVisibility({ showDataTxt: dataVisible }); |
| | | } |
| | | |
| | | function handleColorClick(isStandardColor) { |
| | | const { resGridViews, pointsRes } = SatelliteProxy.drawColor({ |
| | | gridViews: mapViews.gridViews, |
| | | points: mapViews.points, |
| | | gridDataDetail: selectedGridData, |
| | | lastGridViews: mapViews.lastGridViews, |
| | | customColor: !isStandardColor |
| | | satelliteProxy.drawGrid({ |
| | | gridData: satelliteGridStore.selectedGridData, |
| | | useCustomColor: !isStandardColor |
| | | }); |
| | | mapViews.lastGridViews = resGridViews; |
| | | mapViews.lastPoints = pointsRes; |
| | | } |
| | | |
| | | function handleOpacityClick(isOpacity) { |
| | | mapViews.lastGridViews.forEach((e) => { |
| | | e.setOptions({ |
| | | fillOpacity: isOpacity ? 0.1 : 0.7 |
| | | }); |
| | | }); |
| | | satelliteProxy.changeGridOpacity({ isOpacity }); |
| | | } |
| | | |
| | | function handleMixDataClick(gridData) { |