Files
maintenance_system/src/views/largeScreen/components/newMap/initMapData.ts
2025-10-11 09:56:33 +08:00

165 lines
5.6 KiB
TypeScript

import { leftClick } from './entityClick';
// import {leftClick} from '@/views/projectLarge/ProjectScreen/components/newMap/entityClick';
export const initMapData = async (type, data, cd) => {
let entityObject: any;
let options: any;
const baseURL = import.meta.env.VITE_APP_MAP_API;
switch (type) {
case 'groundText':
entityObject = new window['YJ'].Obj.GroundText(window['Earth1'], data);
break;
case 'standText':
entityObject = new window['YJ'].Obj.StandText(window['Earth1'], data);
break;
case 'point':
case 'linkImage':
case 'vrImage':
entityObject = new window['YJ'].Obj.BillboardObject(window['Earth1'], data);
// entityObject.options.billboard.defaultImage = ''
// entityObject.flyTo();
break;
case 'line':
entityObject = await new window['YJ'].Obj.PolylineObject(window['Earth1'], data);
break;
case 'curve':
entityObject = await new window['YJ'].Obj.CurvelineObject(window['Earth1'], data);
break;
case 'panel':
case 'rectangle':
entityObject = new window['YJ'].Obj.PolygonObject(window['Earth1'], data);
break;
case 'rendezvous':
entityObject = new window['YJ'].Obj.AssembleObject(window['Earth1'], data);
break;
case 'attackArrow':
entityObject = new window['YJ'].Obj.AttackArrowObject(window['Earth1'], data);
break;
case 'pincerArrow':
entityObject = new window['YJ'].Obj.PincerArrowObject(window['Earth1'], data);
break;
case 'circle':
entityObject = new window['YJ'].Obj.CircleObject(window['Earth1'], data);
break;
case 'ellipse':
entityObject = new window['YJ'].Obj.EllipseObject(window['Earth1'], data);
break;
case 'model':
entityObject = new window['YJ'].Obj.Model(window['Earth1'], data);
break;
case 'military':
entityObject = new window['YJ'].Obj.GroundSvg(window['Earth1'], data);
entityObject.load(() => {});
break;
case 'terrain':
data.host = baseURL;
console.log('terrain的data', data);
entityObject = new window['YJ'].Obj.Terrain(window['Earth1'], data);
break;
case 'layer':
data.host = baseURL;
entityObject = new window['YJ'].Obj.Layer(window['Earth1'], data);
// entityObject.flyTo();
break;
case 'tileset':
data.host = baseURL;
entityObject = new window['YJ'].Obj.Tileset(window['Earth1'], data);
entityObject.load((res) => {
if (cd) {
cd(entityObject);
}
// 等模型加载完后再加载压平模型
if (window['pressModelMap'])
Array.from((window as any).pressModelMap.keys()).forEach((key: any) => {
if (key.indexOf('_' + data.id) > -1) {
const nodes = (window as any).pressModelMap.get(key);
if (nodes) {
if (nodes.isShow == 1) {
// nodeType[nodes.source_type].render(nodes);
const flatData = JSON.parse(nodes.params);
const entity = window['Earth1'].entityMap.get(flatData.modelId).entity;
const flat: any = new window['YJ'].Analysis.Flat(window['Earth1'], entity, {
positions: flatData.positions,
height: flatData.height,
name: nodes.sourceName
});
(window as any).pressModelEntities.set(nodes.id, flat);
}
}
}
});
});
break;
case 'path':
entityObject = new window['YJ'].Obj.TrajectoryMotion(window['Earth1'], data);
break;
case 'wallStereoscopic':
entityObject = new window['YJ'].Obj.WallStereoscopic(window['Earth1'], data);
break;
case 'entityWall':
entityObject = new window['YJ'].Obj.WallRealStereoscopic(window['Earth1'], data);
break;
case 'diffuseScan':
entityObject = new window['YJ'].Obj.CircleDiffuse(window['Earth1'], data);
break;
case 'radarScan':
entityObject = new window['YJ'].Obj.RadarScan(window['Earth1'], data);
break;
case 'scanStereoscopic':
entityObject = new window['YJ'].Obj.RadarScanStereoscopic(window['Earth1'], data);
break;
case 'textBox':
entityObject = new window['YJ'].Obj.TextBox(window['Earth1'], data, () => {});
break;
case 'polyhedronObject':
entityObject = new window['YJ'].Obj.PolyhedronObject(window['Earth1'], data);
break;
case 'water':
entityObject = new window['YJ'].Obj.WaterSurface(window['Earth1'], data);
break;
case 'fountain':
entityObject = new window['YJ'].Obj.Fountain(window['Earth1'], data);
break;
case 'fire':
entityObject = new window['YJ'].Obj.Flame(window['Earth1'], data);
break;
case 'smoke':
entityObject = new window['YJ'].Obj.Smoke(window['Earth1'], data);
break;
case 'waterL':
entityObject = new window['YJ'].Obj.Spout(window['Earth1'], data);
break;
case 'flyLine':
entityObject = new window['YJ'].Obj.FlowLine(window['Earth1'], data);
break;
case 'explosion':
entityObject = new window['YJ'].Obj.Explosion(window['Earth1'], data);
break;
default:
break;
}
if (entityObject) {
options = structuredClone(entityObject.options);
delete options.host;
switch (type) {
case 'textBox':
delete options.name;
break;
case 'fountain':
case 'fire':
case 'smoke':
case 'waterL':
delete options.url;
break;
default:
break;
}
// /鼠标左键点击事件
entityObject.onClick = () => {
leftClick(options);
};
}
return options;
};