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 == 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; }); }if (id === 1 ) { layerVisible = { RealDrpLayer: true, RealHDLayer: false, RealSkLayer: false, 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: false, RealHDLayer: false, RealSkLayer: false, PicStLayer: false, RivlLayer: true, YuwaiLayer: false, AdcdLayer: true, WataLayer: false, RealSkLayerQ2: false, RealHDLayerQ2: false, } Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); dispatch.runtime.setHome(); } 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, ShyjLayer:true, } Object.keys(DCPJ_TYPES).forEach(key => { layerVisible['Dcpj_' + key + 'Layer'] = false; }); dispatch.runtime.setHome(); } 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: false, RealHDLayer: false, RealSkLayer: false, FzdxLayer: false, WataLayer: false, AdcdLayer: true, // AdcdLayer2: 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: false, 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 }); if(map){ map.setLayoutProperty('热力图', 'visibility', 'visible'); } } else { // dispatch.map.setLayerSetting({dom: true}); if(map){ map.setLayoutProperty('热力图', 'visibility', 'none'); } } if (id === 306 && map) { dispatch.map.setLayerSetting({ dom: false }); dispatch.runtime.setShowGw(true) // if(map){ // map.setLayoutProperty('管网图', 'visibility', 'visible'); // } } else { dispatch.runtime.setShowGw(false) // dispatch.map.setLayerSetting({dom: true}); // if(map){ // map.setLayoutProperty('管网图', 'visibility', 'none'); // } } if (id === 503 || id == 501 || id == 504 || id == 505 || id == 506 || id == 507) { dispatch.map.setLayerSetting({ dom: false }); if(map){ map.setLayoutProperty('灌区图', 'visibility', 'visible'); } } else { // dispatch.map.setLayerSetting({dom: true}); if(map){ map.setLayoutProperty('灌区图', 'visibility', 'none'); } } if(id === 5){ if(map){ map.setLayoutProperty('网格雨量', 'visibility', 'visible'); } }else{ if(map){ map.setLayoutProperty('网格雨量', 'visibility', 'none'); } } if (id != 504) { dispatch.runtime.setYyfa({}) } if ( id === 3 || id === 0 || id === 1 || id === 5 || id === 8 || id === 203 || id === 205 || id === 206 || id === 200 ) { dispatch.map.setLayerSetting({ dom: true }); // if(map){ // map.setLayoutProperty('卫星图', 'visibility', 'visible'); // } } // else { // dispatch.map.setLayerSetting({ dom: false }); // // if(map){ // // map.setLayoutProperty('卫星图', 'visibility', 'none'); // // } // } if(id!==200&&id!==203&&id!==205&&id!==206){ if(map){ const layer = map.getLayer('临时水库tz') if(layer){ map.removeLayer('临时水库tz'); map.removeSource('临时水库tz'); } } } } }) }; export default map;