import React, { useEffect, useReducer, useRef, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Checkbox, message } from 'antd'; import { CloseOutlined } from '@ant-design/icons'; import { useLocation } from 'react-router' import './index.less' export default function Btn() { const dispatch = useDispatch() const location = useLocation() const showPanels = useSelector((s) => s.runtime.showPanels) const layerVisible = useSelector(s => s.map.layerVisible); const isFullScreen = useSelector(s => s.runtime.isFullScreen) const mapCenter = useSelector(s => s.runtime.mapCenter)||{} const mode = useSelector(s=>s.map.mode) const [open, setOpen] = useState(false)//是否弹出图层窗口 const [targetZoom, setTargetZoom] = useState(null)//点击缩放按钮后地图目标的zoom值 useEffect(()=>{ //移动地图后同步targetZoom值 setTargetZoom(mapCenter?.zoom||null) },[mapCenter]) const layerVisibleChanged = (event)=>{ const vo = { [event.target.name]: event.target.checked }; dispatch.map.setLayerVisible(vo); } const mapType = (event)=>{ const name = event.target.name const checked = event.target.checked if(name==='SatelliteImage'&&checked){ dispatch.map.setMode('2d'); dispatch.map.setLayerVisible({ ['SatelliteImage']: true }); dispatch.map.setLayerVisible({ ['OfflineMap']: false }); dispatch.map.setLayerSetting({HLLayer: 'B'}) dispatch.map.setLayerSetting({LakeLayer: 'B'}) } if(name==='OfflineMap'&&checked){ dispatch.map.setMode('2d'); dispatch.map.setLayerVisible({ ['OfflineMap']: true }); dispatch.map.setLayerVisible({ ['SatelliteImage']: false }); dispatch.map.setLayerSetting({HLLayer: 'A',}) dispatch.map.setLayerSetting({LakeLayer: 'A'}) } if(name === '3d'&&'&&checked'){ if(location.pathname==='/mgr/sy/tqyb'){ message.error('天气预报无法切换3d视图') return } dispatch.map.setMode('3d'); dispatch.map.setLayerVisible({ ['SatelliteImage']: false }); dispatch.map.setLayerVisible({ ['OfflineMap']: false }); dispatch.map.setLayerSetting({HLLayer: 'B'}) dispatch.map.setLayerSetting({LakeLayer: 'B'}) } } return (
dispatch.runtime.setShowPanels(!showPanels)}>
{}}>
dispatch.runtime.setHome()}>
{}}>
{ if(mapCenter?.zoom === targetZoom){ dispatch.runtime.setCameraTarget({...mapCenter, zoom: mapCenter.zoom + 1, fixed:true}) setTargetZoom(mapCenter.zoom + 1) } }}>
{ if(mapCenter?.zoom === targetZoom){ dispatch.runtime.setCameraTarget({...mapCenter, zoom: mapCenter.zoom - 1, fixed:true }) setTargetZoom(mapCenter.zoom - 1) } }}>
{}}>
dispatch.runtime.setIsFullScreen(!isFullScreen)}>
{setOpen(!open)}}>
图层显示控制 setOpen(false)}/>
基础图层
行政区划
河流
湖泊
3D图
影像图
矢量图
监测体系
雨量站
水位站
流量站
视频点
预警广播
位移站
渗压站
渗流站
重点对象
危险区
安置点
企事业单位
沿河居民户
水利工程
水库监测
水电站
); }