private async Task <AlternativeRoutesComposition> UpdateRoutesComposition(DrivingRouteObject drivingRouteObject, bool moveCamera) { _logger.Method().Start($"Route id = {drivingRouteObject.Route.RouteId}, move camera = {moveCamera}"); _updateRoutesCompositionCts?.Cancel(); _updateRoutesCompositionCts = new CancellationTokenSource(); Route route = drivingRouteObject.Route; IReadOnlyList <DrivingRouteObject> routes = await _internalRouteService.Value.GetAlternativeRouteObjects(route, _dringGuide.Value.RoutePosition ?? new PolylinePosition(0, 0), _updateRoutesCompositionCts.Token); var composition = new AlternativeRoutesComposition(_drivingRouteObjectFactory.Value.Create(drivingRouteObject.Route), routes, _localizationService.Value); _renderDisposable?.Dispose(); _renderDisposable = await _alternativeRoutesRenderer.Value.Render(composition, _updateRoutesCompositionCts.Token); _subscriptions?.Dispose(); _subscriptions = OverviewShownStream.Where(show => !show).ToUnitObservable().Subscribe(_ => HideAlternativeRoutes()); if (moveCamera) { await MoveCameraToOverview(composition, _updateRoutesCompositionCts.Token); } return(composition); }
public static Task <FullGuideRouteData> Create(DrivingRouteObject drivingRouteObject, ILogger logger) { Route route = drivingRouteObject.Route; IEnumerable <Event> eventsNoCoro = route.Events.AsEnumerable(); IEnumerable <RouteJamType> jamSegs = route.JamSegments.Select(s => (RouteJamType)s.JamType); IEnumerable <Section> sectionsNoCoro = route.Sections.AsEnumerable(); return(Task.Run(() => new FullGuideRouteData(eventsNoCoro, jamSegs, sectionsNoCoro, drivingRouteObject, logger))); }
private FullGuideRouteData(IEnumerable <Event> eventsNoCoro, IEnumerable <RouteJamType> jamSegs, IEnumerable <Section> sectionsNoCoro, DrivingRouteObject drivingRouteObject, ILogger logger) { DrivingRouteObject = drivingRouteObject; Route route = drivingRouteObject.Route; using (new TimeIt("GetRouteSections", logger)) Sections = GetRouteSections(route, logger); using (new TimeIt("GetRouteDisplayEvents", logger)) Events = GetRouteDisplayEvents(eventsNoCoro); using (new TimeIt("GetProgressInfo", logger)) ProgressInfo = DrivingGuideHelper.GetProgressInfo(route.RouteId, jamSegs, sectionsNoCoro, Sections); }
public DebugFullDrivingGuideSession(DrivingRouteObject drivingRouteObject, IDrivingGuide drivingGuide, IDrivingRouteObjectFactory drivingRouteObjectFactory, IGenericRendererSync <DrivingRouteObject, DrivingRouteGuideMapObject> guideRouteRenderer, MapObjectCollection mapObjectCollection, IInternalLocationService locationService, IInternalUserLocationLayerPresenter locationLayerPresenter, ILogManager logManager, ISettingsRepository settingsRepository, ILifecycleService lifecycleService, ILanguagesRepository languagesRepository, ICameraManager cameraManager, IMapCameraPositionPresenter cameraPositionPresenter, ViaPointsSessionManagerFactory viaPointsSessionManagerFactory, RoutesOverviewPresenterFactory routesOverviewPresenterFactory, IConcurrencyService concurrencyService, IDebugPanelSettingsRepository debugRepository) : base(drivingRouteObject, drivingGuide, drivingRouteObjectFactory, guideRouteRenderer, mapObjectCollection, locationService, locationLayerPresenter, logManager, settingsRepository, lifecycleService, languagesRepository, cameraManager, cameraPositionPresenter, viaPointsSessionManagerFactory, routesOverviewPresenterFactory) { _concurrencyService = concurrencyService; _debugRepository = debugRepository; _drivingGuide = drivingGuide; }