import { parseGeoJSONFeature } from "../../utils/tools"; import { DCPJ_TYPES, SLGC_TYPES } from "../../views/Home/consts"; import { parseGeoJSON } from "../../utils/tools"; function initState() { return { calculating: false, search: '', view: 0, layerVisible: { HighlightLayer: true, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }, layerSetting: { dem: true, dom: false, drplabel: 'h24', skNormalLabelInvisible: true, bxsk_lhdd: false, bxsk_jzdd: false, bxsk_bsdd: true, }, rightStack: [], hidePanels: false, }; } const map = { state: initState(), reducers: { setRaw(state, val) { return { ...state, ...val } }, setCalculating(state, val) { return { ...state, calculating: val }; }, setView(state, view) { return { ...state, view, rightStack: [], }; }, setSearch(state, search) { return { ...state, search }; }, setRightStack(state, { name, open }) { if (!name) { return state; } const rightStack = (state.rightStack || []).filter(o => o !== name); if (open) { rightStack.push(name); } return { ...state, rightStack }; }, setLayerVisible(state, vo) { const s = { ...state }; s.layerVisible = { ...s.layerVisible, ...vo, }; return s; }, setLayerVisibleExclusive(state, vo) { return { ...state, layerVisible: { ...vo } }; }, setLayerSetting(state, so) { const s = { ...state }; s.layerSetting = { ...s.layerSetting, ...so, }; return s; }, setHidePanels(state, val) { return { ...state, hidePanels: val, } }, reset() { return initState(); } }, effects: dispatch => ({ openSearch(value) { this.setSearch({ mode: 'search', search: value, }); this.setRightStack({ name: 'search', open: !!value }); }, openHighlights(ctx) { const { title, records } = ctx; if (!title || !records) { this.setSearch(null); this.setRightStack({ name: 'search', open: false }); return; } this.setSearch({ mode: 'select', records, title, }); this.setRightStack({ name: 'search', open: true }); }, // { type, prop, fill, stroke } highlightFeatures(records) { records = records.map(o => { if (!o || !o.type || !o.props) { return null; } const feature = parseGeoJSONFeature(o.props); if (!feature || !feature.properties) { console.error('invalid record to highlight'); return null; } feature.properties = o; return feature; }).filter(Boolean); dispatch.runtime.setLayerSetting({ highlight: records }) }, resetMap() { dispatch.map.reset(); dispatch.fzjcview.reset(); dispatch.overallview.reset(); dispatch.rcview.reset(); dispatch.realview.reset(); dispatch.shyjview.reset(); dispatch.slgcview.reset(); dispatch.runtime.reset(); }, setView(id) { let layerVisible = {}; const map = window.__mapref if (id === 1 || id == 503) { layerVisible = { RealDrpLayer: true, RealHDLayer: true, RealSkLayer: true, AdcdLayer: true, PicStLayer: false, RivlLayer: true, WataLayer: false, } Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 0) { layerVisible = { RealDrpLayer: true, RealHDLayer: true, RealSkLayer: false, PicStLayer: false, RivlLayer: true, YuwaiLayer: false, AdcdLayer: true, WataLayer: false, RealSkLayerQ2: true, RealHDLayerQ2: true, } Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 8) { layerVisible = { RealDrpLayer: true, RealHDLayer: true, RealSkLayer: false, PicStLayer: false, RivlLayer: true, YuwaiLayer: false, AdcdLayer: true, WataLayer: false, RealSkLayerQ2: true, RealHDLayerQ2: true, } Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 2) { layerVisible = { AdcdLayer: true, RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, FzdxLayer: false, WataLayer: false, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = !!SLGC_TYPES[key]; }); } else if (id === 3) { layerVisible = { AdcdLayer: true, RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, FzdxLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = !SLGC_TYPES[key]; }); } else if (id === 4) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 5) { layerVisible = { RealDrpLayer: true, RealHDLayer: false, RealSkLayer: true, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 6) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, RainDrpLayer: true, ShuikuLayer: false, BxSkLayer: true, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, RealHDLayerQ2: true, RealSkLayerQ2: true }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 7) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: true, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 201) { layerVisible = { RealDrpLayer: true, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 202) { layerVisible = { RealDrpLayer: false, RealHDLayer: true, RealSkLayer: true, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 203) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, BxjcLayer: false, SyjcLayer: false, SljcLayer: false, ByjcLayer: false }; dispatch.runtime.setCameraTarget({ center: [114.88069, 31.171967], zoom: 13, pitch: 60, bearing: 0 }); Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 204) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, PicStLayer: true, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 205) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: true, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 206) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, XunchaLayer: true, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 200) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 301) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, ShuichangLayer: true, ShuiyuandiLayer: false, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 302) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, ShuichangLayer: true, ShuichangQLayer: true, ShuiyuandiQLayer: true, ShuizhiLayer: true, ShuiyuandiLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 303 || id === 305 || id === 306) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, ShuichangLayer: true, ShuichangQLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 303 || id === 306 || id === 305) { layerVisible = { RealDrpLayer: false, RealHDLayer: false, RealSkLayer: false, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id === 307) { layerVisible = { RealDrpLayer: false, RealHDLayer: true, RealSkLayer: true, BxSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, RoadLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id == 501) { layerVisible = { RealDrpLayer: true, RealHDLayer: true, RealSkLayer: true, ShuiZhaLayer: true, BzLayer: true, SbLayer: true, QdLayer: true, ShuizhiLayer: true, TrsqLayer: true, AdcdLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id == 504) { layerVisible = { RealDrpLayer: true, TrsqLayer: true, AdcdLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id == 505) { layerVisible = { BzLayer: true, SbLayer: true, QdLayer: true, ShuizhiLayer: true, AdcdLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); } else if (id == 506 || id == 507) { layerVisible = { AdcdLayer: true, RivlLayer: true, }; Object.keys(DCPJ_TYPES).forEach(key => { if (key == 'bsnssinfo') { layerVisible['Dcpj_' + key + 'Layer'] = true; } else { layerVisible['Dcpj_' + key + 'Layer'] = false; } }); } dispatch.runtime.setLayerSetting({ contour: null, dem: undefined }) dispatch.map.setRaw({ layerVisible, view: id }); dispatch.runtime.setFeaturePop(null); if (id === 8) { dispatch.rcview.showRealContour('h24') } else { dispatch.runtime.setLayerSetting({ contour: null, dem: undefined }); dispatch.runtime.setLayerSetting({ planeArea: null }); dispatch.map.setLayerVisible({ ContourLayer: false }); } if (id === 201) { dispatch.map.setLayerSetting({ dom: false }); map.setLayoutProperty('热力图', 'visibility', 'visible'); } else { // dispatch.map.setLayerSetting({dom: true}); map.setLayoutProperty('热力图', 'visibility', 'none'); } if (id === 306) { dispatch.map.setLayerSetting({ dom: false }); dispatch.runtime.setShowGw(true) // map.setLayoutProperty('管网图', 'visibility', 'visible'); } else { dispatch.runtime.setShowGw(false) // dispatch.map.setLayerSetting({dom: true}); // map.setLayoutProperty('管网图', 'visibility', 'none'); } if (id === 503 || id == 501 || id == 504 || id == 505 || id == 506 || id == 507) { dispatch.map.setLayerSetting({ dom: false }); map.setLayoutProperty('灌区图', 'visibility', 'visible'); } else { // dispatch.map.setLayerSetting({dom: true}); map.setLayoutProperty('灌区图', 'visibility', 'none'); } if (id != 504) { dispatch.runtime.setYyfa({}) } if ( id === 3 || id === 203 || id === 205 || id === 206 ) { dispatch.map.setLayerSetting({ dom: true }); // map.setLayoutProperty('卫星图', 'visibility', 'visible'); } else { dispatch.map.setLayerSetting({ dom: false }); // map.setLayoutProperty('卫星图', 'visibility', 'none'); } // if (id == 203) { // const skdata = [ // { // "stcd": "61614200", // "type": "sk", // "hasRz": true, // "stnm": "浮桥河水库", // "adcd": "421181100000", // "wscd": null, // "importancy": 0, // "lgtd": 114.875, // "lttd": 31.166667, // "elev": 0, // "damel": 71.33, // "dsflz": 68.04, // "fsltdz": 64.89, // "ddz": 51.78, // "zcxsw": 64.89, // "drpTm": "2025-06-03T02:00:00.000Z", // "today": 0, // "h1": 5, // "h3": 6, // "h6": 7.5, // "h12": 8, // "h24": 9, // "h48": 26, // "drpState": 1, // "rz": 60.71, // "w": 162.8, // "a_fsltdz": -4.18, // "rzTm": "2025-06-03T02:00:00.000Z", // "rzWarning": 0, // "rzState": 1, // "aRz": -4.18 // }, // { // "stcd": "61613010", // "type": "sk", // "hasRz": true, // "stnm": "明山水库", // "adcd": "421181103000", // "wscd": null, // "importancy": 0, // "lgtd": 115.066667, // "lttd": 31.016667, // "elev": 0, // "damel": 98.7, // "dsflz": 96.07, // "fsltdz": 93, // "ddz": 78.02, // "zcxsw": 93, // "drpTm": "2025-06-03T02:00:00.000Z", // "today": 0, // "h1": 7, // "h3": 8.4, // "h6": 10.5, // "h12": 11.200000000000001, // "h24": 12.6, // "h48": 25.799999999999997, // "drpState": 1, // "rz": 84.43, // "w": 49.5, // "a_fsltdz": -8.569999999999993, // "rzTm": "2025-06-03T02:00:00.000Z", // "rzWarning": 0, // "rzState": 1, // "aRz": -8.57 // }, // { // "stcd": "61612610", // "type": "sk", // "hasRz": true, // "stnm": "三河口水库", // "adcd": "421181109000", // "wscd": null, // "importancy": 0, // "lgtd": 115.166667, // "lttd": 31.333333, // "elev": 0, // "damel": 156.8, // "dsflz": 154.99, // "fsltdz": 149, // "ddz": 124, // "zcxsw": 149, // "drpTm": "2025-06-03T02:00:00.000Z", // "today": 0, // "h1": 7, // "h3": 8.4, // "h6": 10.5, // "h12": 11.200000000000001, // "h24": 12.6, // "h48": 25.799999999999997, // "drpState": 1, // "rz": 141.45, // "w": 77.8, // "a_fsltdz": -7.550000000000011, // "rzTm": "2025-06-03T01:00:00.000Z", // "rzWarning": 0, // "rzState": 1, // "aRz": -7.55 // }, // { // "stcd": "61612700", // "type": "sk", // "hasRz": true, // "stnm": "碧绿河水库", // "adcd": "421181109000", // "wscd": null, // "importancy": 0, // "lgtd": 115.214444, // "lttd": 31.299722, // "elev": 0, // "damel": 142.9, // "dsflz": 139.08, // "fsltdz": 137, // "ddz": 105, // "zcxsw": 137, // "drpTm": "2025-06-03T02:00:00.000Z", // "today": 0, // "h1": 4, // "h3": 4.8, // "h6": 6, // "h12": 6.4, // "h24": 7.2, // "h48": 22.6, // "drpState": 1, // "rz": 119.6, // "w": 13.15, // "a_fsltdz": -17.400000000000006, // "rzTm": "2025-06-03T00:00:00.000Z", // "rzWarning": 0, // "rzState": 2, // "aRz": -17.4 // } // ] // const layer = map.getLayer('关联站点') // if (layer) { // map.removeLayer('关联站点'); // map.removeSource('关联站点'); // } // map.addLayer({ // 'id': '关联站点',//+new Date().getTime(), // 'type': 'symbol', // 'source': { // 'type': 'geojson', // 'data': { // 'type': 'FeatureCollection', // 'features': [], // }, // }, // 'layout': { // 'icon-allow-overlap': true, // 'text-allow-overlap': true, // 'icon-image': '水库-离线', // 'icon-size': [ // 'interpolate', ['linear'], ['zoom'], // 10, 0.4, // 14, 0.8, // ], // 'text-allow-overlap': true, // 'text-size': [ // 'interpolate', ['linear'], ['zoom'], // 10, 10, // 14, 14, // ], // 'text-font': ['Roboto Black'], // 'text-field': [ // 'step', // ['zoom'], // '', // 12, ['get', 'stnm'] // ], // 'text-anchor': 'top', // 'text-offset': [0, 1], // }, // 'paint': { // 'text-color': '#fff' // }, // 'visibility': 'visible', // }); // map.getSource('关联站点').setData(parseGeoJSON(skdata)) // } if(id!==200&&id!==203&&id!==205&&id!==206){ const layer = map.getLayer('临时水库tz') if(layer){ map.removeLayer('临时水库tz'); map.removeSource('临时水库tz'); } } } }) }; export default map;