| | |
| | | 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': //配网巡检 |
| | |
| | | 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) { |
| | |
| | | setMenuS5(res) { |
| | | switch (res.id) { |
| | | case 'a1': |
| | | case 'a3': |
| | | 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; |
| | |
| | | }, |
| | | // 标绘 |
| | | 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) { |
| | | return null; |
| | | 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) { |
| | |
| | | return res.name; |
| | | break; |
| | | case 'a2': |
| | | return res.name; |
| | | earthCtrl.factory.createScreenshot(); |
| | | break; |
| | | default: |
| | | return null; |