const menuManager = { pid: null, pointFly: null, particle: null, AnalysisFlood: null, colorAll: { point: SmartEarth.Cesium.Color.fromCssColorString('#ff0000'), polyline: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), polygon: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), }, init(res) { switch (res.pid) { case 's1': //配网巡检 return this.setMenuS1(res); break; case 's2': //配网运检 return this.setMenuS2(res); break; case 's3': //配网灾害管理 return this.setMenuS3(res); break; case 's4': //图层管理 return this.setMenuS4(res); break; case 's5': //漫游 return this.setMenuS5(res); break; case 's6': //定位 return this.setMenuS6(res); break; case 's7': //标绘 return this.setMenuS7(res); break; case 's8': //测量 return this.setMenuS8(res); break; case 's9': //特效 return this.setMenuS9(res); break; } }, //配网巡检 setMenuS1(res) { switch (res.id) { case 'a1': return res.name; break; default: return null; break; } }, // 配网运检 setMenuS2(res) { switch (res.id) { case 'a1': case 'a2': return res.name; break; default: return null; break; } }, // 灾害管理 setMenuS3(res) { switch (res.id) { case 'a1': return res.name; break; case 'a2': if (this.particle) { this.particle.remove(); this.particle = null; return; } var that = this; var handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); handler.setInputAction((event) => { let cartesian = Viewer.camera.pickEllipsoid(event.position); let cartographic = Cesium.Cartographic.fromCartesian(cartesian); if (cartesian) { let lng = parseFloat(Cesium.Math.toDegrees(cartographic.longitude)).toFixed(6); // 经度 let lat = parseFloat(Cesium.Math.toDegrees(cartographic.latitude)).toFixed(6); // 纬度 var alt = Viewer.camera.positionCartographic.height.toFixed(0); that.setCreateFireAnalysis(lng, lat, alt); } handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); }, Cesium.ScreenSpaceEventType.LEFT_CLICK); break; case 'a3': if (this.AnalysisFlood) { this.AnalysisFlood.endWater(); this.AnalysisFlood = undefined; return } var url = SmartEarthRootUrl + 'Workers/image/33.gif'; const method = { pointSelect: true, // rectangle: 'rectangle', spood: 20, GroupID: 0, url: url, }; this.AnalysisFlood = earthCtrl.analysis.createSubmergence(method, (value) => {}); break; default: return null; break; } }, setCreateFireAnalysis(lon, lat, alt) { this.particle = earthCtrl.factory.createParticleEffect( 'flame', { x: lon, y: lat, z: 0, }, { translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //平移 }, (data) => {} ); }, //图层管理 setMenuS4(res) { switch (res.id) { case 'a1': return res.name; break; default: return null; break; } }, // 漫游 setMenuS5(res) { switch (res.id) { case 'a1': if (this.pointFly) { this.pointFly.removeFromMap(); } else { earthCtrl.factory.createSimpleGraphic('billboard', {}, (entity) => { const position = entity.position.getValue(); const coordinate = earthCtrl.core.toDegrees(position); this.pointFly = earthCtrl.camera.rotateCamera({ lon: coordinate.lon, lat: coordinate.lat, distance: 1000, pitch: -30, }); }); } return null; break; case 'a2': return res.name; break; case 'a3': earthCtrl.analysis.createIndoormode({ showHelp: true }); return null; break; default: return null; break; } }, // 定位 setMenuS6(res) { switch (res.id) { case 'a1': return res.name; break; default: return null; break; } }, // 标绘 setMenuS7(res) { switch (res.id) { case 'a1': earthCtrl.factory.createSimpleGraphic('point', {}, (entity) => {}); break; case 'a2': earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {}); break; case 'a3': earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {}); break; case 'a4': earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {}); break; case 'a5': earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {}); break; case 'a6': earthCtrl.factory.SimpleGraphic.clear(); break; default: break; } return null; }, // 测量 setMenuS8(res) { const colorAll = this.colorAll; switch (res.id) { case 'a1': earthCtrl.measure.clampLineDistance(colorAll, (e) => {}); break; case 'a2': earthCtrl.measure.altitude(colorAll, (e) => {}); break; case 'a3': earthCtrl.measure.surfaceArea( { ...colorAll, tin: true, // 是否显示tin三角网 onlyTerrain: false, // 是否只测量精细地形 }, (e) => {} ); break; case 'a4': earthCtrl.measure.planeArea(colorAll, (e) => {}); break; case 'a5': earthCtrl.measure.horizontalDistance(colorAll, (e) => {}); break; case 'a6': earthCtrl.measure.clearResult(); break; } }, // 特效 setMenuS9(res) { switch (res.id) { case 'a1': return res.name; break; case 'a2': earthCtrl.factory.createScreenshot(); break; default: return null; break; } }, }; export default menuManager;