tsg-web/src/views/Home/MapCtrl/M2D/layermgr2d.js

195 lines
6.9 KiB
JavaScript

import { useDispatch, useSelector } from "react-redux";
import LayerMgr from "../layermgr";
import BouaLayer2D from "./layers/BouaLayer2D";
import BouaInLayer2D from "./layers/BouaInLayer2D";
import BouaOutLayer2D from "./layers/BouaOutLayer2D";
import AdcdBorderInLayer2D from "./layers/AdcdBorderInLayer2D"
import BouaOutsideLayer2D from "./layers/BouaOutsideLayer2D";
import OfflineMap2D from "./layers/OfflineMap2D";
import SatelliteImage2D from "./layers/SatelliteImage2D";
import RainLayer2D from "./layers/RainLayer2D";
import RainLayer2DRadar from "./layers/RainLayer2D-radar";
import RainLayer2DRh from "./layers/RainLayer2D-rh";
import HLLayer2D from "./layers/HLLayer2D";
import HLLayer2D2 from "./layers/HLLayer2D2";
import HL2Layer2D from "./layers/HL2Layer2D";
import XLYLayer2D from "./layers/XLYLayer2D";
import AdcdBorderLayer2D from './layers/AdcdBorderLayer2D'
import YsgcLayer2D from './layers/YsgcLayer2D'
import highroadLayer2D from './layers/highroadLayer2D'
import Contourlayer from "./layers/contourlayer";
import ContourlayerLoop from "./layers/contourlayerLoop";
import WxqLayer2D from "./layers/WxqLayer2D";
export default class LayerMgr2D extends LayerMgr {
constructor(map) {
super();
this.map = map;
}
/**
* 添加图层
* @param {@BaseLayer}
*/
addLayer(layer) {
let ollayers = [];
if (layer.getRawLayers) {
ollayers = layer.getRawLayers();
}
for (const ollayer of ollayers) {
/*ollayer.getSource().clear();
this.map.removeLayer(ollayer);*/
//console.log("39++++ ollayer",ollayer);
this.map.addLayer(ollayer);
}
this.layers.push(layer);
if (layer.onAdd) {
layer.onAdd(this.map);
}
return layer;
}
addLayerC(layer, cLayerData) {
//console.log("58 cLayerData",cLayerData);
this.layers = [];
this.layers.push(layer);
if (layer.onAdd) {
layer.onAdd(this.map, cLayerData);
}
//console.log("layer 74++++++++++++",layer);
return layer;
}
onClick(coordinate) {
for (let i = this.layers.length - 1; i >= 0; i -= 1) {
const curlayer = this.layers[i];
if (typeof curlayer.onClick === 'function') {
const passdown = curlayer.onClick({
map: this.map,
coordinate,
});
if (!passdown) {
break;
}
}
}
}
destroy() {
for (const layer of this.layers) {
let ollayers = [];
if (layer.getRawLayers) {
ollayers = layer.getRawLayers();
}
for (const ollayer of ollayers) {
this.map.removeLayer(ollayer);
}
}
this.layers = null;
}
addAppLayers(dispatch, visible, setting, otherParams) {
visible = visible || {};
dispatch.map.setMap(this.map);
dispatch.map.setClickLoopBtn(false);
//离线地图
this.addLayer(new OfflineMap2D({ visible: visible[OfflineMap2D.LayerName], setting, dispatch }));
//卫星影像
this.addLayer(new SatelliteImage2D({ visible: visible[SatelliteImage2D.LayerName], setting, dispatch }));
//乡镇边界
this.addLayer(new AdcdBorderInLayer2D({ visible: visible[AdcdBorderInLayer2D.LayerName], setting, dispatch }));
//县外的边界
// this.addLayer(new BouaOutsideLayer2D({ visible: visible[BouaOutsideLayer2D.LayerName], setting, dispatch }));
//河流
// this.addLayer(new HLLayer2D2({ visible: visible[HLLayer2D2.LayerName], setting, dispatch }));//河流线-卫星图 //缺失
this.addLayer(new HLLayer2D({ visible: visible[HLLayer2D.LayerName], setting, dispatch }));//河流线-矢量图
// this.addLayer(new HL2Layer2D({ visible: visible[HL2Layer2D.LayerName], setting, dispatch }));//河流面 //缺失
//省级公路
// this.addLayer(new highroadLayer2D({ visible: visible[highroadLayer2D.LayerName], setting, dispatch })); //缺失
//咸丰边界
// this.addLayer(new BouaLayer2D({ visible: visible[BouaLayer2D.LayerName], setting, dispatch }));//缺失
// this.addLayer(new BouaInLayer2D({ visible: visible[BouaInLayer2D.LayerName], setting, dispatch }));
// this.addLayer(new BouaOutLayer2D({ visible: visible[BouaOutLayer2D.LayerName], setting, dispatch }));
//RainLayer2DRadar 测雨雷达
// this.addLayer(new RainLayer2DRadar({ visible: visible[RainLayer2DRadar.LayerName], setting, dispatch }));
//RainLayer2DRh 融合雨量
// this.addLayer(new RainLayer2DRh({ visible: visible[RainLayer2DRh.LayerName], setting, dispatch }));
// this.addLayer(new XLYLayer2D({ visible: visible[XLYLayer2D.LayerName], setting, dispatch }));
//行政区划边界
// ['422826102','422826100','422826201','422826104','422826203','422826204','422826200','422826101','422826103','422826202','422826400'].map((i)=>{
// this.addLayer(new AdcdBorderLayer2D({ visible: visible["AdcdBorderLayer_"+i], setting, dispatch },i));
// })
//引水工程
// this.addLayer(new YsgcLayer2D({ visible: visible[YsgcLayer2D.LayerName], setting, dispatch }));
//danad:危险区 placement:安置点 transfer:转移路线 flrvvlg:沿河居民户 bsnssinfo:企事业单位
//bridge:桥梁 culvert:路涵 sluice:水闸 daminfo:塘(堰)坝 dike:堤防 wbrinfo:无线预警广播
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_danadLayer"], setting, dispatch },"danad"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_placementLayer"], setting, dispatch },"placement"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_transferLayer"], setting, dispatch },"transfer"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_flrvvlgLayer"], setting, dispatch },"flrvvlg"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_bsnssinfoLayer"], setting, dispatch },"bsnssinfo"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_bridgeLayer"], setting, dispatch },"bridge"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_culvertLayer"], setting, dispatch },"culvert"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_sluiceLayer"], setting, dispatch },"sluice"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_daminfoLayer"], setting, dispatch },"daminfo"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_dikeLayer"], setting, dispatch },"dike"));
// this.addLayer(new WxqLayer2D({ visible: visible["Dcpj_wbrinfoLayer"], setting, dispatch },"wbrinfo"));
this._addAppMarkerLayers(dispatch, visible, setting, otherParams);
}
addAppLayersC(dispatch, visible, setting) {
visible = visible || {};
this.addLayerC(new Contourlayer({ visible: visible[Contourlayer.LayerName], setting, dispatch }),setting.contour);
}
addAppLayersCLoop(dispatch, visible, setting) {
visible = visible || {};
//console.log("layermgr2d ContourlayerLoop 142",setting.contour)
if(this.map){
this.addLayerC(new ContourlayerLoop({ visible: visible[ContourlayerLoop.LayerName], setting, dispatch }, this.map),setting.contour);
dispatch.map.setMap(this.map);
}
}
}