// 处理波束数据 public void DealBeamData(Model.BeamData beamData) { if (beamData.PointType == 1) // 波束 { // 先获取卫星,如果没有,则不创建波束 string satelliteId = string.Format("卫星{0}", beamData.SatelliteId); Model3D model = modelMgr.FindModel(satelliteId); if (model == null) { return; } EventPublisher.PublishMapDealBeamDataEvent(this, beamData); Beam beam = CreateBeam(beamData, model); beam.SatellitePoint = model.Coordinate; if (beamMgr.HasBeam(satelliteId, beam)) // 波束存在,移动波束 { UpdateBeamElement(beam, model); beamMgr.UpdataBeamCenterPoint(satelliteId, beam); } else // 波束不存在,创建波束 { if (AddBeamElement(beam, model)) { beamMgr.AddBeam(satelliteId, beam); } } } else // 卫星 { string modelName = string.Format("卫星{0}", beamData.SatelliteId); Model3D model = CreateSatelliteModel(modelName, beamData.Point); if (modelMgr.HasModel(model)) // 卫星存在,则更新卫星信息,并移动波束的位置 { modelMgr.UpdataModel(model); // 刷新卫星信息 UpdateModelPosition(model); // 更新卫星位置 beamMgr.UpdataBeamCenterPoint(modelName, beamData.Point); // 刷新波束信息 // 移动波束的位置 List <Beam> beamList = beamMgr.FindBeams(modelName, o => o.SatelliteID == beamData.SatelliteId); if (beamList == null) { return; } foreach (Beam b in beamList) { UpdateBeamElement(b, model); } } else // 卫星不存在,则创建卫星 { if (AddModel2Earth(model)) { modelMgr.AddModel(model); } } } }