mcfxkh-Web/src/models/map/index.js

632 lines
17 KiB
JavaScript

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;
});
} else if (id === 8) {
layerVisible = {
RealDrpLayer: false,
RealHDLayer: false,
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;
});
} 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: 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 != 504) {
dispatch.runtime.setYyfa({})
}
if (
id === 3
|| 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;