tsg-web/src/views/Home/MapCtrl/Map3D/layermgr3d.js

92 lines
2.5 KiB
JavaScript

import LayerMgr from "../layermgr";
import BouaLayer3D from "./layers/BouaLayer3D";
import RainLayer3D from "./layers/RainLayer3D";
import RainLayer3DRadar from "./layers/RainLayer3D-radar";
import RainLayer3DRh from "./layers/RainLayer3D-rh";
import HLLayer3D from "./layers/HLLayer3D";
import XLYLayer3D from "./layers/XLYLayer3D";
export default class LayerMgr3D extends LayerMgr {
constructor(viewer) {
super();
this.viewer = viewer;
this.highlightEnts = [];
}
/**
* 添加图层
* @param {@BaseLayer}
*/
addLayer(layer) {
this.layers.push(layer);
if (layer.onAdd) {
layer.onAdd(this.viewer);
}
return layer;
}
destroy() {
for (const layer of this.layers) {
layer.destroy();
}
this.viewer.entities.removeAll();
this.viewer.imageryLayers.removeAll()
}
frameUpdate() {
const tm = Date.now();
for (const layer of this.layers) {
if (layer.onFrameUpdate) {
layer.onFrameUpdate(tm, this.viewer);
}
}
}
/**
*
*/
addAppLayers(dispatch, visible, setting, otherParams) {
visible = visible || {};
this.addLayer(new BouaLayer3D({ visible: visible[BouaLayer3D.LayerName], setting, dispatch }));
if(visible[RainLayer3D.LayerName]){
this.addLayer(new RainLayer3D({ visible: visible[RainLayer3D.LayerName], setting, dispatch }));
}else{
//this.viewer.imageryLayers.removeAll();
this.viewer.entities.removeAll();
}
if(visible[RainLayer3DRadar.LayerName]){
this.addLayer(new RainLayer3DRadar({ visible: visible[RainLayer3DRadar.LayerName], setting, dispatch }));
}else{
//this.viewer.imageryLayers.removeAll();
this.viewer.entities.removeAll();
}
if(visible[RainLayer3DRh.LayerName]){
this.addLayer(new RainLayer3DRh({ visible: visible[RainLayer3DRh.LayerName], setting, dispatch }));
}else{
//this.viewer.imageryLayers.removeAll(); RainLayer3DRh
this.viewer.entities.removeAll();
}
if(visible[HLLayer3D.LayerName]){
this.addLayer(new HLLayer3D({ visible: visible[HLLayer3D.LayerName], setting, dispatch }));
}else{
//this.viewer.imageryLayers.removeAll();
this.viewer.entities.removeAll();
}
if(visible[XLYLayer3D.LayerName]){
this.addLayer(new XLYLayer3D({ visible: visible[XLYLayer3D.LayerName], setting, dispatch }));
}else{
//this.viewer.imageryLayers.removeAll();
this.viewer.entities.removeAll();
}
this._addAppMarkerLayers(dispatch, visible, setting, otherParams);
}
}