fix: 轨迹查看操作栏遮挡信息问题
This commit is contained in:
		
							parent
							
								
									95a6ddec29
								
							
						
					
					
						commit
						33bb420725
					
				| @ -498,7 +498,7 @@ export interface JudgeUI { | |||||||
|   dw: string |   dw: string | ||||||
|   endExamDialogController: CustomDialogController |   endExamDialogController: CustomDialogController | ||||||
|   generateExamRecordsDialogController: CustomDialogController |   generateExamRecordsDialogController: CustomDialogController | ||||||
|   laneSignal:PerLane |   laneSignal:PerLane, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -147,7 +147,12 @@ struct JudgePage { | |||||||
|   @State carInfo: CarInfoType = {} |   @State carInfo: CarInfoType = {} | ||||||
|   @State isErrorMsgEnd: boolean = false |   @State isErrorMsgEnd: boolean = false | ||||||
|   @State disConnectErrorOpen: boolean = false |   @State disConnectErrorOpen: boolean = false | ||||||
|   @State laneSignal: PerLane = InitialPerLane |   @State @Watch("laneSignalChange") laneSignal: PerLane = InitialPerLane | ||||||
|  | 
 | ||||||
|  |   laneSignalChange() { | ||||||
|  |     dConsole.log("车道信号变化1", this.laneSignal) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   public context = getContext(this) as common.UIAbilityContext; |   public context = getContext(this) as common.UIAbilityContext; | ||||||
|   // 信号查看弹窗 |   // 信号查看弹窗 | ||||||
|   signalTrajectoryDialogController: CustomDialogController = new CustomDialogController({ |   signalTrajectoryDialogController: CustomDialogController = new CustomDialogController({ | ||||||
|  | |||||||
| @ -6,8 +6,7 @@ import TabComponent from '../compontents/Tab' | |||||||
| @CustomDialog | @CustomDialog | ||||||
| export default struct SignalTrajectoryDialog { | export default struct SignalTrajectoryDialog { | ||||||
|   @State active: number = 0 |   @State active: number = 0 | ||||||
|   @Prop  laneSignal: PerLane |   @Link  laneSignal: PerLane | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   private controller?: CustomDialogController |   private controller?: CustomDialogController | ||||||
|  | |||||||
| @ -28,9 +28,11 @@ export default struct SignalDisplayComponent { | |||||||
|   // 原始数据 |   // 原始数据 | ||||||
|   @State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,," |   @State rawData: string = "$GPS,,,,,,,,,,,,,,,,,,,,,,,,,,,,," | ||||||
|   // 车道信息 |   // 车道信息 | ||||||
|   @Prop  laneSignal: PerLane |   @Link @Watch("laneSignalChange")  laneSignal: PerLane | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|  |   laneSignalChange(){ | ||||||
|  |     dConsole.log("车道信号变化3",this.laneSignal) | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|   aboutToAppear(): void { |   aboutToAppear(): void { | ||||||
|     DifferentialAndSignal.onMsg(this.getMsg) |     DifferentialAndSignal.onMsg(this.getMsg) | ||||||
| @ -191,7 +193,7 @@ struct trajectoryComponent { | |||||||
| 
 | 
 | ||||||
|   build() { |   build() { | ||||||
|     Stack({ |     Stack({ | ||||||
|       alignContent: Alignment.TopStart |       alignContent: Alignment.TopEnd | ||||||
|     }) { |     }) { | ||||||
|       XComponent({ |       XComponent({ | ||||||
|         id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变 |         id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变 | ||||||
|  | |||||||
| @ -1,161 +0,0 @@ | |||||||
| import apiJudgeSdk from 'libJudgeSdk.so'; |  | ||||||
| import { examJudgeMapSetScaling } from '../../judgeSDK/api'; |  | ||||||
| import { PerLane } from '../../../model'; |  | ||||||
| import { InitialPerLane } from '../../../mock'; |  | ||||||
| 
 |  | ||||||
| interface RoadDataType { |  | ||||||
|   name: string, |  | ||||||
|   key: string | string[] |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| @Component |  | ||||||
| export default struct RealTime { |  | ||||||
|   @State message: string = '开始绘制' |  | ||||||
|   // 控制XComponent组件的创建和销毁 |  | ||||||
|   @State draw: boolean = false |  | ||||||
|   //模拟考试项目 |  | ||||||
|   @State scaleNum: number = 100 |  | ||||||
|   @State gpsActive: number = 1 |  | ||||||
|   @State ratio: number = 1 |  | ||||||
|   @State lane: PerLane = InitialPerLane |  | ||||||
|   scaleFn = async (num: number) => { |  | ||||||
|     const scaleNum = this.scaleNum |  | ||||||
|     if (scaleNum > 0 && scaleNum < 5000) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     if (scaleNum === 0 && num > 0) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     if (scaleNum > 5000 && num < 0) { |  | ||||||
|       this.scaleNum += num; |  | ||||||
|     } |  | ||||||
|     await examJudgeMapSetScaling(this.scaleNum); |  | ||||||
|   } |  | ||||||
|   private widthNumber: string | number | Resource = 0 |  | ||||||
|   private heightNumber: string | number | Resource = 0 |  | ||||||
|   private RoadData: Array<RoadDataType> = [ |  | ||||||
|     { name: '路段组号', key: 'MapRoad_Code_No' }, |  | ||||||
|     { name: '路段编码', key: 'MapRoad_Name' }, |  | ||||||
|     { name: '车轮压线', key: ['TouchLineType', 'TouchDir'] }, |  | ||||||
|     { name: '车身碰线', key: ['TouchLineTypeCS', 'TouchLineDirCS'] }, |  | ||||||
|     { name: '基准车道', key: ['BasePointInLaneNo', 'BaseLaneCount'] }, |  | ||||||
|     { name: '前点车道', key: ['FrontPointLaneNo', 'FrontPointLaneCount'] }, |  | ||||||
|     { name: '后车点道', key: ['BackPointLaneNo', 'BackPointLaneCount'] }, |  | ||||||
|     { name: '左前/后车身距离', key: ['Body_LF_ToLeftEdge', 'Body_LB_ToLeftEdge'] }, |  | ||||||
|     { name: '右前/后车身距离', key: ['Body_RF_ToRightEdge', 'Body_RB_ToRightEdge'] }, |  | ||||||
|     { name: '右前/后车身边线', key: ['Body_RF_ToBaseLine', 'Body_RB_ToBaseLine'] }, |  | ||||||
|     { name: '右前/后轮距离', key: ['Wheel_RF_ToRightEdge', 'Wheel_RB_ToRightEdge'] }, |  | ||||||
|     { name: '右前/后轮边线', key: ['Wheel_RF_ToBaseLine', 'Wheel_RB_ToBaseLine'] }, |  | ||||||
|     { name: '左前/后轮距离', key: ['Wheel_LF_ToRightEdge', 'Wheel_LB_ToRightEdge'] }, |  | ||||||
|     { name: '左前/后轮边线', key: ['Wheel_LF_ToBaseLine', 'Wheel_LB_ToBaseLine'] }, |  | ||||||
|     { name: '车道属性', key: ['BasePointInLaneDir', 'CrossLineAttr', 'DirInverse'] }, |  | ||||||
|     { name: '形状', key: ['InShapeAttr', 'ShapeNo', 'ShapeNoWheel'] }, |  | ||||||
|     { name: '路段点', key: ['CrossPointNo'] }, |  | ||||||
|   ] |  | ||||||
| 
 |  | ||||||
|   async aboutToDisappear() { |  | ||||||
|     // clearInterval(this.timer) |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   async aboutToAppear() { |  | ||||||
|     // const judge = new Judge(this) |  | ||||||
|     // let timer = setInterval(() => { |  | ||||||
|     //   this.lane = globalThis.laneData; |  | ||||||
|     // }, 1000) |  | ||||||
|     // this.timer = timer |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   getScaleNum = (): number => { |  | ||||||
|     const scaleNum = this.scaleNum; |  | ||||||
|     if (scaleNum < 200) return 10; |  | ||||||
|     if (scaleNum < 400) return 30; |  | ||||||
|     if (scaleNum < 600) return 50; |  | ||||||
|     if (scaleNum < 800) return 70; |  | ||||||
|     if (scaleNum < 1000) return 100; |  | ||||||
|     if (scaleNum < 2000) return 500; |  | ||||||
|     return 1000; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   getValues(roadColumn: RoadDataType) { |  | ||||||
|     const lane = this.lane; |  | ||||||
|     let key = roadColumn.key; |  | ||||||
|     let str = '' |  | ||||||
|     if (Array.isArray(key)) { |  | ||||||
|       key.forEach((k, index) => { |  | ||||||
|         str += (Reflect.get(lane, k) === undefined ? '' : Reflect.get(lane, k)) + (index == key.length - 1 ? '' : '/') |  | ||||||
|       }) |  | ||||||
|     } else { |  | ||||||
|       str = Reflect.get(lane, key) === undefined ? '' : Reflect.get(lane, key) |  | ||||||
|     } |  | ||||||
|     return str |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   build() { |  | ||||||
|     Row() { |  | ||||||
|       Column() { |  | ||||||
|         Row() { |  | ||||||
|           Text('车道信息').fontColor(this.gpsActive == 0 ? '#2D3C5A' : '#fff').fontSize(20) |  | ||||||
|         } |  | ||||||
|         .width('100%') |  | ||||||
|         .height(37) |  | ||||||
|         .backgroundColor(this.gpsActive == 0 ? '#fff' : '#1A1A1A') |  | ||||||
|         .margin({ top: 10 * this.ratio, right: 10 }) |  | ||||||
|         .justifyContent(FlexAlign.Center) |  | ||||||
| 
 |  | ||||||
|         Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) { |  | ||||||
|           ForEach(this.RoadData, (item: RoadDataType) => { |  | ||||||
|             Column() { |  | ||||||
|               Text(`${item.name}:${this.getValues(item)}`) |  | ||||||
|                 .fontSize(20) |  | ||||||
|                 .lineHeight(30) |  | ||||||
|                 .fontColor('#fff') |  | ||||||
|             }.height(30).justifyContent(FlexAlign.Start).width('100%') |  | ||||||
|           }) |  | ||||||
|         }.margin({ top: 5 }) |  | ||||||
| 
 |  | ||||||
|       }.width(168 * 1.5) |  | ||||||
|       .height(this.heightNumber) |  | ||||||
|       .backgroundColor('#282828') |  | ||||||
|       .margin({ top: 6 * this.ratio, }) |  | ||||||
| 
 |  | ||||||
|       Column() { |  | ||||||
|         if (this.draw) { |  | ||||||
|           XComponent({ |  | ||||||
|             id: 'duolun_plugin_id_draw', //显示轨迹窗口id名称,注意这个ID要和C++侧一致,不能变 |  | ||||||
|             type: 'surface', |  | ||||||
|             libraryname: 'JudgeSdk' |  | ||||||
|             // libraryname: 'judgesdk' |  | ||||||
|           }) |  | ||||||
|             .width(this.widthNumber) |  | ||||||
|             .height(this.heightNumber) |  | ||||||
|             .onLoad(() => { |  | ||||||
|               apiJudgeSdk.examJudgeMapSetDrawing(true); //停止绘制地图轨迹,false:表示结束绘制 |  | ||||||
|             }) |  | ||||||
|             .onDestroy(() => { |  | ||||||
|               apiJudgeSdk.examJudgeMapSetDrawing(false); //停止绘制地图轨迹,false:表示结束绘制 |  | ||||||
|               this.draw = false; |  | ||||||
|               // clearInterval(globalThis.realTimer) |  | ||||||
|             }) |  | ||||||
|         } else { |  | ||||||
|           Column() { |  | ||||||
|           } |  | ||||||
|           .width(this.widthNumber) |  | ||||||
|           .height(this.heightNumber) |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       .width('100%') |  | ||||||
|       .backgroundColor('#fff') |  | ||||||
| 
 |  | ||||||
|       Row() { |  | ||||||
|         Image($rawfile('judge/big.png')).width(60).onClick(() => { |  | ||||||
|           this.scaleFn(this.getScaleNum() - 1) |  | ||||||
|         }) |  | ||||||
|         Image($rawfile('judge/small.png')).width(60).onClick(() => { |  | ||||||
|           this.scaleFn(this.getScaleNum()) |  | ||||||
|         }).margin({ left: 20 }) |  | ||||||
|       }.position({ x: '32%', y: 60 }) |  | ||||||
|     } |  | ||||||
|     .height('100%') |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user