diff --git a/public/assets/mapicon/anzhidian2.png b/public/assets/mapicon/anzhidian2.png new file mode 100644 index 0000000..0b89611 Binary files /dev/null and b/public/assets/mapicon/anzhidian2.png differ diff --git a/public/assets/mapicon/flow.png b/public/assets/mapicon/flow.png index 6fc51fa..403074a 100644 Binary files a/public/assets/mapicon/flow.png and b/public/assets/mapicon/flow.png differ diff --git a/public/assets/mapicon/flowtest.png b/public/assets/mapicon/flowtest.png new file mode 100644 index 0000000..975abd1 Binary files /dev/null and b/public/assets/mapicon/flowtest.png differ diff --git a/public/assets/mapicon/flowtest2.png b/public/assets/mapicon/flowtest2.png new file mode 100644 index 0000000..420b483 Binary files /dev/null and b/public/assets/mapicon/flowtest2.png differ diff --git a/public/assets/mapicon/flowtest3.png b/public/assets/mapicon/flowtest3.png new file mode 100644 index 0000000..3f80be5 Binary files /dev/null and b/public/assets/mapicon/flowtest3.png differ diff --git a/public/assets/mapicon/hdsw.png b/public/assets/mapicon/hdsw.png index 9eb0f9c..d0859e4 100644 Binary files a/public/assets/mapicon/hdsw.png and b/public/assets/mapicon/hdsw.png differ diff --git a/public/assets/mapicon/qishiyedanwei2.png b/public/assets/mapicon/qishiyedanwei2.png new file mode 100644 index 0000000..7c08f58 Binary files /dev/null and b/public/assets/mapicon/qishiyedanwei2.png differ diff --git a/public/assets/mapicon/sl.png b/public/assets/mapicon/sl.png index cd665e8..e1bee8f 100644 Binary files a/public/assets/mapicon/sl.png and b/public/assets/mapicon/sl.png differ diff --git a/public/assets/mapicon/sy.png b/public/assets/mapicon/sy.png index bb5bcf8..308689a 100644 Binary files a/public/assets/mapicon/sy.png and b/public/assets/mapicon/sy.png differ diff --git a/public/assets/mapicon/video.png b/public/assets/mapicon/video.png index 5b9d1cd..0494f42 100644 Binary files a/public/assets/mapicon/video.png and b/public/assets/mapicon/video.png differ diff --git a/public/assets/mapicon/weixianqu2.png b/public/assets/mapicon/weixianqu2.png new file mode 100644 index 0000000..58decd4 Binary files /dev/null and b/public/assets/mapicon/weixianqu2.png differ diff --git a/public/assets/mapicon/wy.png b/public/assets/mapicon/wy.png index 409428c..b8dabb6 100644 Binary files a/public/assets/mapicon/wy.png and b/public/assets/mapicon/wy.png differ diff --git a/public/assets/mapicon/yanhejuminhu2.png b/public/assets/mapicon/yanhejuminhu2.png new file mode 100644 index 0000000..31d47e6 Binary files /dev/null and b/public/assets/mapicon/yanhejuminhu2.png differ diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 994bad2..bf2f3db 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -27,6 +27,7 @@ const apiurl = { sdzlist: service + '/reservoir/water/listV2',//水电站-基础设施没有监测数据 }, monitor: { + globalSearch: service +"/globalSearch/findByName",//首页-全局搜索 sk: { detail: service + '/reservoir/water/detail', //监测数据-下方表格 picture: service + '/reservoir/water/monitor/data', diff --git a/src/views/Home/MapCtrl/Markers/AZDMarker.js b/src/views/Home/MapCtrl/Markers/AZDMarker.js index b277635..1ab0923 100644 --- a/src/views/Home/MapCtrl/Markers/AZDMarker.js +++ b/src/views/Home/MapCtrl/Markers/AZDMarker.js @@ -13,7 +13,8 @@ function renderMarker({ rzWarning, rzState }, { width }) {
- + +
` } @@ -23,7 +24,7 @@ function AZDMarker({ data, dispatch, setting, zoom }) { useEffect(() => { - const width = 15; + const width = 18; const placeholder = document.getElementById(`marker_anzhidian_${data.id}`); if (!placeholder) { diff --git a/src/views/Home/MapCtrl/Markers/QSYDWMarker.js b/src/views/Home/MapCtrl/Markers/QSYDWMarker.js index 7502fb9..ef410b9 100644 --- a/src/views/Home/MapCtrl/Markers/QSYDWMarker.js +++ b/src/views/Home/MapCtrl/Markers/QSYDWMarker.js @@ -17,7 +17,7 @@ function renderMarker({ rzWarning, rzState }, { width, highlight }) {
- +
` } diff --git a/src/views/Home/MapCtrl/Markers/YHJMHMarker.js b/src/views/Home/MapCtrl/Markers/YHJMHMarker.js index 09c2421..f8354f1 100644 --- a/src/views/Home/MapCtrl/Markers/YHJMHMarker.js +++ b/src/views/Home/MapCtrl/Markers/YHJMHMarker.js @@ -18,7 +18,7 @@ function renderMarker({ rzWarning, rzState }, { width }) {
- +
` } @@ -27,7 +27,7 @@ function renderMarker({ rzWarning, rzState }, { width }) { function YHJMHMarker({ data, dispatch, setting, zoom }) { useEffect(() => { - const width = 15; + const width = 18; const placeholder = document.getElementById(`marker_yanhejuminhu_${data.id}`); if (!placeholder) { diff --git a/src/views/Home/mapToolBox/globalSearch.js b/src/views/Home/mapToolBox/globalSearch.js new file mode 100644 index 0000000..76ea5fa --- /dev/null +++ b/src/views/Home/mapToolBox/globalSearch.js @@ -0,0 +1,329 @@ +import React, { useEffect, useReducer, useRef, useState } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { Form, Button, Input, Table, Modal, message } from 'antd'; +import { CloseOutlined } from '@ant-design/icons'; +import { geometryCenter } from '../../../utils/tools'; +import './index.less' +import { config } from '@/config'; +import { httpget } from '@/utils/request'; +import apiurl from '@/service/apiurl'; + +export default function Btn({open, mode, layerVisible, setOpen, mapType, layerVisibleChanged}) { + const [form] = Form.useForm(); + const [ tableData, setTableData ] = useState([]) + const dispatch = useDispatch() + const columns = [ + { title: '名称', key: 'name', dataIndex: 'name',align: "center",width:150, ellipsis: true, }, + { title: '类型', key: 'type', dataIndex: 'type',align: "center",width: 50, ellipsis: true }, + ]; + // const importMap = { + // '业务规则库': () => import('../../../sz/ywgz/form'), + // '调度方案库': () => import('../../../sz/ddfa/form'), + // '工程安全知识库': () => import('../../../sz/khzbgl/form') + // }; + + const onFinish = ({name}) => { + if(name){ + getData(name) + }else{ + setTableData([]) + } + } + + const getData = async(e)=>{ + const { code, data} = await httpget(apiurl.monitor.globalSearch, { name: e }) + if(code!==200){ + // return + } + setTableData(data||[]) + } + + const clickItem = (item)=>{ + // 业务规则库 + if (item.type == '业务规则库' || item.type == '调度方案库' || item.type == '工程安全知识库') { + // regularOpen(item) + return; // 添加return避免继续执行 + } + + // 工程安全监测点 + if (item.type == '渗压站' || item.type == '渗流站' || item.type == '位移站') { + renderGCaqModal(item) + return; // 添加return避免继续执行 + } + + // 关闭所有已打开的弹窗 + dispatch.runtime.closeFeaturePopAll(); + // 先关闭所有图层 + dispatch.map.setLayerVisible({ + WxqLayer: false, + HdswLayer: false, + RealDrpLayer: false, + PicStLayer: false, + ShuiKuLayer: false, + TuRangLayer: false, + GongShuiLayer: false, + AZDLayer: false, + QSYDWLayer: false, + YHJMHLayer: false, + YjgbLayer: false, + SYLayer: false, //渗压站 + SLLayer: false, //渗流站 + WYLayer: false, //位移站 + ShuiDianZhanLayer: false, + }); + // 根据类型确定弹窗类型和图层 + let popType = item.type; + let layerToShow = {}; + + // 对特定类型进行映射和图层设置 + switch (item.type) { + // case '水文站': + // popType = 'hdsw'; + // layerToShow = { HdswLayer: true }; + // break; + // case '雨量站': + // popType = 'drp'; + // layerToShow = { RealDrpLayer: true }; + // break; + case '视频站': + popType = 'tuxiang'; + layerToShow = { PicStLayer: true }; + break; + case '水库水位站': + popType = 'shuiku'; + layerToShow = { HdswLayer: true }; //水位站用HdswLayer, ShuikuLayer是水利工程的 + break; + case '河道水位站': + popType = 'hedao'; + layerToShow = { HdswLayer: true }; + break; + case '土壤墒情站': + popType = 'turangshangqing'; + layerToShow = { TuRangLayer: true }; + break; + case '流量站': + popType = 'gongshui'; + layerToShow = { GongShuiLayer: true }; + break; + + case '安置点': + popType = 'anzhidian'; + layerToShow = { AZDLayer: true }; + break; + case '企事业单位': + popType = 'qishiyedanwei'; + layerToShow = { QSYDWLayer: true }; + break; + case '沿河居民点': + popType = 'yanhejuminhu'; + layerToShow = { YHJMHLayer: true }; + break; + default: + // 默认不设置特定图层 + break; + } + + // 设置图层可见性 + if (Object.keys(layerToShow).length > 0) { + dispatch.map.setLayerVisible(layerToShow); + } + const record = JSON.parse(item.jsonStr); + + if (item.type == '危险区') { + dispatch.map.setLayerVisible({ WxqLayer: true }) + const wxq = JSON.parse(sessionStorage.getItem('wxq'))?.[record?.adcd] || '' + if (!wxq) { + message.error('暂无经纬度数据') + return + } + const data = wxq.properties + const center = item.type == '危险区' ? geometryCenter(wxq.geometry) : + [record?.lgtd, record?.lttd]; + + + dispatch.runtime.setCameraTarget({ + center: [center[0], center[1]], + zoom: 18, + pitch: 60 + }) + dispatch.runtime.setFeaturePop({ + id: data.PID, + data: { ...data }, + type: 'wxq', + lgtd: center[0], + lttd: center[1], + }) + return; + } + + if (item.type == '安置点' || item.type == '企事业单位' || item.type == '沿河居民点') { + // 显示弹窗 + dispatch.runtime.setFeaturePop({ + type: popType, + data: record, + lgtd: item.lgtd, + lttd: item.lttd, + id: record.id + }); + } + + // 雨量站 + if (item.type == '雨量站') { + // // 创建近一小时的时间范围 + // const tms = [ + // moment().add(-1, 'hours').format('YYYY-MM-DD HH:mm:ss'), + // moment().format('YYYY-MM-DD HH:mm:ss') + // ]; + + // // 直接调用httppost2获取数据并添加图层 + // const fetchAndAddLayer = async () => { + // try { + // const { data, code, msg } = await httppost(apiurl.station.rainlist, { + // "stm": tms[0], + // "etm": tms[1] + // }); + + // if (code !== 200) { + // message.error(msg || '请求失败'); + // return; + // } + + // const list = data.map((i) => ({ + // id: i.stcd, + // ...i, + // drp: i.drp + // })); + + // dispatch.map.setLayerVisible({ RealDrpLayer: true }) + // dispatch.map.setLayerSetting({RealDrpLayer:list}) + // } catch (error) { + // console.error('获取雨量站数据失败', error); + // } + // }; + + // fetchAndAddLayer(); + } + + + // 设置地图视角 + dispatch.runtime.setCameraTarget({ + center: [item.lgtd, item.lttd], + zoom: 18, + pitch: 60 + }); + + } + + // 业务规则库弹框 + // const regularOpen = async (record) => { + // const id = record?.unionCode + // const com = record.type == '业务规则库' ? + // { url: apiurl.zsk.ywgz.getOne } : + // record.type == '调度方案库' ? + // { url: apiurl.zsk.ddfa.getOne } : + // { url: apiurl.zsk.gcaq.getOne }; + // const res = await httpget(com.url + id) + // // 导入业务规则库的Modal组件 + // // 使用映射函数进行导入 + // try { + // const ModalForm = await importMap[record.type](); + + // Modal.destroyAll(); // 先销毁可能存在的其他Modal + // const modal = Modal.confirm({ + // title:
+ //
{record.name}详情
+ //
, + // width: 1000, + // content: ( + // <> + //
+ // + // + // ), + // icon: null, + // okButtonProps: { style: { display: 'none' } }, + // cancelButtonProps: { style: { display: 'none' } }, + // closable: true + // }); + // } catch (error) { + // console.error('模块导入失败:', error); + // message.error(`无法加载${record.type}详情,请稍后再试`); + // } + // return; + // } + + // 工程安全监测点 + const renderGCaqModal = (record) => { + const row = { ...record, stationCode: record.name } + let popType = ''; + + if (record.type == '渗压站') { + popType = 'shenya'; + } else if (record.type == '渗流站') { + popType = 'shenliu'; + } else if (record.type == '位移站') { + popType = 'weiyi'; + } + + dispatch.runtime.setFeaturePop({ + type: popType, + data: row, + lgtd: record.lgtd, + lttd: record.lttd, + id: record.id + }); + return; + } + + useEffect(()=>{ + return ()=>{ + dispatch.runtime.closeFeaturePopAll() + dispatch.map.setLayerVisible({ + WxqLayer: false, + HdswLayer: false, + RealDrpLayer: false, + PicStLayer: false, + ShuiKuLayer: false, + GongShuiLayer: false, + AZDLayer: false, + QSYDWLayer: false, + YHJMHLayer: false + }); + dispatch.runtime.setHome() + } + },[]) + + + return ( +
+
+
+ 搜索 + setOpen(false)}/> +
+
+ + + + +
+ ({ + // onClick:()=>clickItem(row) + }) + } + /> + + + ); +} diff --git a/src/views/Home/mapToolBox/index.js b/src/views/Home/mapToolBox/index.js index ea8fa45..7f9a220 100644 --- a/src/views/Home/mapToolBox/index.js +++ b/src/views/Home/mapToolBox/index.js @@ -5,6 +5,8 @@ import { CloseOutlined } from '@ant-design/icons'; import { useLocation } from 'react-router' import './index.less' import { config } from '@/config'; +import LayerBox from './layer' +import GlobalSearch from './globalSearch' export default function Btn() { const dispatch = useDispatch() @@ -16,24 +18,35 @@ export default function Btn() { const mapCenter = useSelector(s => s.runtime.mapCenter)||{} const mode = useSelector(s=>s.map.mode) const [open, setOpen] = useState(false)//是否弹出图层窗口 + const [searchOpen, SearchOpen] = useState(false)//弹出全局搜索 const [targetZoom, setTargetZoom] = useState(null)//点击缩放按钮后地图目标的zoom值 + const lastCameraTargetTimeRef = useRef(0);//节流 useEffect(()=>{ //移动地图后同步targetZoom值 setTargetZoom(mapCenter?.zoom||null) },[mapCenter]) + //切换图层 const layerVisibleChanged = (event)=>{ const vo = { [event.target.name]: event.target.checked }; - if(event.target.checked && (event.target.name==='SYLayer' || event.target.name==='SLLayer' || event.target.name==='WYLayer')){ - // dispatch.runtime.setCameraTarget({ - // center: [114.15437134051429, 29.744689445729758], - // zoom: 18, - // pitch: 60 - // }) + const now = Date.now() + if( + event.target.checked && + (event.target.name==='SYLayer' || event.target.name==='SLLayer' || event.target.name==='WYLayer') && + (now-lastCameraTargetTimeRef.current >=1000) + ){ + dispatch.runtime.setCameraTarget({ + center: [114.15437134051429, 29.744689445729758], + zoom: 18, + pitch: 60 + }) + lastCameraTargetTimeRef.current = now; } dispatch.map.setLayerVisible(vo); } + + //切换地图框架 const mapType = (name)=>{ if(name==='2d'){ dispatch.map.setMode('2d'); @@ -87,7 +100,10 @@ export default function Btn() {
dispatch.runtime.setShowPanels(!showPanels)}>
-
{message.warn('功能开发中')}}> +
{ + if(!searchOpen){setOpen(false)} + SearchOpen(!searchOpen) + }}>
dispatch.runtime.setHome()}> @@ -118,188 +134,32 @@ export default function Btn() {
dispatch.runtime.setIsFullScreen(!isFullScreen)}>
-
{setOpen(!open)}}> +
{ + if(!open){SearchOpen(false)} + setOpen(!open)} + }>
-
-
-
- 资源目录 - setOpen(false)}/> -
-
-
- mapType('2d')} name={'SatelliteImage'} > 影像图 -
- -
{ - const cameraTargeta = { - center:config.mapCenter, - zoom: 15, - pitch: config.pitch3d, - } - if(mode==='2d'){ - dispatch.runtime.setCameraTarget(cameraTargeta) - }else{ - dispatch.runtime.setMapCenter(cameraTargeta) - } - mapType('2d') - }} - > - {/*
*/} -
水库全景
-
-
{ - const cameraTargeta = { - center: [114.15437134051429, 29.744689445729758], - zoom: 14, - pitch: 60 - } - if(mode==='2d'){ - dispatch.runtime.setCameraTarget(cameraTargeta) - }else{ - dispatch.runtime.setMapCenter(cameraTargeta) - } - mapType('2d') - }} - > - {/*
*/} -
流域全景
-
-
- mapType('3d')} name={'3d'} > 3D图 -
-
{ - const cameraTargeta = { - center: [114.15437134051429, 29.744689445729758], - zoom: 18, - pitch: 60 - } - if(mode==='3d'){ - dispatch.runtime.setCameraTarget(cameraTargeta) - }else{ - dispatch.runtime.setMapCenter(cameraTargeta) - } - mapType('3d') - }} - > -
-
主坝
-
-
{ - const cameraTargeta = { - center: [114.18263599215172, 29.747020722346193], - zoom: 18, - pitch: 60 - } - if(mode==='3d'){ - dispatch.runtime.setCameraTarget(cameraTargeta) - }else{ - dispatch.runtime.setMapCenter(cameraTargeta) - } - mapType('3d') - }} - > -
-
副坝
-
-
{ - const cameraTargeta = { - center: [114.15437134051429, 29.743689445729758], - zoom: 18, - pitch: 60 - } - if(mode==='3d'){ - dispatch.runtime.setCameraTarget(cameraTargeta) - }else{ - dispatch.runtime.setMapCenter(cameraTargeta) - } - mapType('3d') - }} - > -
-
溢洪道
-
- -
- 监测体系 -
-
- -
-
水库水文站
-
-
- -
-
流量站
-
-
- -
-
视频站
-
- -
- -
-
渗压站
-
- -
- -
-
渗流站
-
- -
- -
-
位移站
-
- - -
- 洪水防御 -
-
- -
-
危险区
-
-
- -
-
安置点
-
-
- -
-
企事业单位
-
-
- -
-
沿河居民户
-
-
-
- -
+ + +
); } diff --git a/src/views/Home/mapToolBox/index.less b/src/views/Home/mapToolBox/index.less index 18c8d3b..21f26b9 100644 --- a/src/views/Home/mapToolBox/index.less +++ b/src/views/Home/mapToolBox/index.less @@ -115,4 +115,77 @@ } } } + + + .mapToolSearch{ + position: absolute; + top: 5px; + right: 45px; + width: 0; + height: 580px; + transition: width 0.3s ease-in-out; + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); + overflow: hidden; + + .mapToolSearchBox{ + position: absolute; + background: #1c3965f0; + border: 1px solid #2755a1; + width: 260px; + height: 100%; + border-radius: 4px; + top: 0; + left: 0; + overflow: hidden; + .mapToolSearchBoxTitle{ + height: 40px; + border-bottom: 1px solid #2755a1; + display: flex; + font-size: 14px; + font-weight: bold; + align-items: center; + justify-content: space-between; + padding: 0 10px; + + .mapToolLayerBoxTitleIcon{ + font-size: 13px; + cursor: pointer; + } + } + .search-bar { + margin-bottom: 0px; + padding: 10px; + // background: rgba(0, 0, 0, 0.2); + border-radius: 4px; + display: flex; + align-items: center; + + .ant-form-item { + margin-bottom: 0; + margin-right: 10px; + + label { + color: #fff; + } + } + + .ant-input { + width: 125px; + height: 24px; + } + } + } + } + + .width260{ + width: 260px; + } + .width160{ + width: 160px; + } + .width0{ + width: 0; + } + + } \ No newline at end of file diff --git a/src/views/Home/mapToolBox/layer.js b/src/views/Home/mapToolBox/layer.js new file mode 100644 index 0000000..2c4427a --- /dev/null +++ b/src/views/Home/mapToolBox/layer.js @@ -0,0 +1,189 @@ +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' +import { config } from '@/config'; + +export default function Btn({open, mode, layerVisible, setOpen, mapType, layerVisibleChanged}) { + const dispatch = useDispatch() + + return ( +
+
+
+ 资源目录 + setOpen(false)}/> +
+
+
+ mapType('2d')} name={'SatelliteImage'} > 影像图 +
+ +
{ + const cameraTargeta = { + center:config.mapCenter, + zoom: 15, + pitch: config.pitch3d, + } + if(mode==='2d'){ + dispatch.runtime.setCameraTarget(cameraTargeta) + }else{ + dispatch.runtime.setMapCenter(cameraTargeta) + } + mapType('2d') + }} + > + {/*
*/} +
水库全景
+
+
{ + const cameraTargeta = { + center: [114.15437134051429, 29.744689445729758], + zoom: 14, + pitch: 60 + } + if(mode==='2d'){ + dispatch.runtime.setCameraTarget(cameraTargeta) + }else{ + dispatch.runtime.setMapCenter(cameraTargeta) + } + mapType('2d') + }} + > + {/*
*/} +
流域全景
+
+
+ mapType('3d')} name={'3d'} > 3D图 +
+
{ + const cameraTargeta = { + center: [114.15437134051429, 29.744689445729758], + zoom: 18, + pitch: 60 + } + if(mode==='3d'){ + dispatch.runtime.setCameraTarget(cameraTargeta) + }else{ + dispatch.runtime.setMapCenter(cameraTargeta) + } + mapType('3d') + }} + > +
+
主坝
+
+
{ + const cameraTargeta = { + center: [114.18263599215172, 29.747020722346193], + zoom: 18, + pitch: 60 + } + if(mode==='3d'){ + dispatch.runtime.setCameraTarget(cameraTargeta) + }else{ + dispatch.runtime.setMapCenter(cameraTargeta) + } + mapType('3d') + }} + > +
+
副坝
+
+
{ + const cameraTargeta = { + center: [114.15437134051429, 29.743689445729758], + zoom: 18, + pitch: 60 + } + if(mode==='3d'){ + dispatch.runtime.setCameraTarget(cameraTargeta) + }else{ + dispatch.runtime.setMapCenter(cameraTargeta) + } + mapType('3d') + }} + > +
+
溢洪道
+
+ +
+ 监测体系 +
+
layerVisibleChanged({target:{name:'HdswLayer',checked:!layerVisible['HdswLayer']}})}> + +
+
水库水文站
+
+
layerVisibleChanged({target:{name:'GongShuiLayer',checked:!layerVisible['GongShuiLayer']}})}> + +
+
流量站
+
+
layerVisibleChanged({target:{name:'PicStLayer',checked:!layerVisible['PicStLayer']}})}> + +
+
视频站
+
+ +
layerVisibleChanged({target:{name:'SYLayer',checked:!layerVisible['SYLayer']}})}> + +
+
渗压站
+
+ +
layerVisibleChanged({target:{name:'SLLayer',checked:!layerVisible['SLLayer']}})}> + +
+
渗流站
+
+ +
layerVisibleChanged({target:{name:'WYLayer',checked:!layerVisible['WYLayer']}})}> + +
+
位移站
+
+ + +
+ 洪水防御 +
+
layerVisibleChanged({target:{name:'WxqLayer',checked:!layerVisible['WxqLayer']}})}> + +
+
危险区
+
+
layerVisibleChanged({target:{name:'AZDLayer',checked:!layerVisible['AZDLayer']}})}> + +
+
安置点
+
+
layerVisibleChanged({target:{name:'QSYDWLayer',checked:!layerVisible['QSYDWLayer']}})}> + +
+
企事业单位
+
+
layerVisibleChanged({target:{name:'YHJMHLayer',checked:!layerVisible['YHJMHLayer']}})}> + +
+
沿河居民户
+
+
+
+
+ ); +}