Search in sources :

Example 6 with TransportRouteResult

use of net.osmand.router.TransportRouteResult in project Osmand by osmandapp.

the class MapRouteInfoMenu method updateCards.

private void updateCards() {
    MapActivity mapActivity = getMapActivity();
    if (mapActivity == null) {
        return;
    }
    OsmandApplication app = mapActivity.getMyApplication();
    nightMode = app.getDaynightHelper().isNightModeForMapControls();
    TargetPointsHelper targetPointsHelper = app.getTargetPointsHelper();
    RoutingHelper routingHelper = app.getRoutingHelper();
    boolean hasPrecalculatedMissingMaps = hasPrecalculatedMissingMaps();
    boolean hasCalculatedMissingMaps = hasCalculatedMissingMaps(app);
    List<BaseCard> menuCards = new ArrayList<>();
    boolean bottomShadowVisible = true;
    if (isBasicRouteCalculated()) {
        GPXFile gpx = GpxUiHelper.makeGpxFromRoute(routingHelper.getRoute(), app);
        SimpleRouteCard simpleRouteCard = new SimpleRouteCard(mapActivity, gpx);
        simpleRouteCard.setListener(this);
        menuCards.add(simpleRouteCard);
        bottomShadowVisible = false;
    } else if (isTransportRouteCalculated()) {
        TransportRoutingHelper transportRoutingHelper = app.getTransportRoutingHelper();
        List<TransportRouteResult> routes = transportRoutingHelper.getRoutes();
        if (routes != null && routes.size() > 0) {
            TransportRouteResult route = routes.get(0);
            int walkTimeReal = transportRoutingHelper.getWalkingTime(route.getSegments());
            int walkTimePT = (int) route.getWalkTime();
            int walkTime = walkTimeReal > 0 ? walkTimeReal : walkTimePT;
            int travelTime = (int) route.getTravelTime() + walkTime;
            LatLon startLocation = transportRoutingHelper.getStartLocation();
            LatLon endLocation = transportRoutingHelper.getEndLocation();
            int approxPedestrianTime = (int) MapUtils.getDistance(startLocation, endLocation);
            boolean showPedestrianCard = approxPedestrianTime < travelTime + 60 && approxPedestrianTime < MAX_PEDESTRIAN_ROUTE_DURATION;
            boolean hasTopCard = false;
            if (routes.size() > 1 && routeSelected) {
                int currentRoute = app.getTransportRoutingHelper().getCurrentRoute();
                if (currentRoute >= 0 && currentRoute < routes.size()) {
                    route = routes.get(currentRoute);
                    PublicTransportCard card = new PublicTransportCard(mapActivity, startLocation, endLocation, route, currentRoute);
                    card.setRouteInfoVisible(false);
                    card.setRouteButtonsVisible(false);
                    card.setShowBottomShadow(false);
                    card.setShowTopShadow(false);
                    card.setListener(this);
                    menuCards.add(card);
                    hasTopCard = true;
                }
            }
            for (int i = 0; i < routes.size(); i++) {
                route = routes.get(i);
                PublicTransportCard card = new PublicTransportCard(mapActivity, startLocation, endLocation, route, i);
                card.setShowButtonCustomTitle(mapActivity.getString(R.string.shared_string_show_on_map));
                card.setShowBottomShadow(i == routes.size() - 1 && !showPedestrianCard);
                card.setShowTopShadow(i != 0 || hasTopCard);
                card.setListener(this);
                menuCards.add(card);
            }
            if (showPedestrianCard) {
                PedestrianRouteCard pedestrianRouteCard = new PedestrianRouteCard(mapActivity, approxPedestrianTime);
                pedestrianRouteCard.setListener(this);
                menuCards.add(pedestrianRouteCard);
            }
            bottomShadowVisible = routes.size() == 0;
        } else {
            RouteMenuAppModes mode = app.getRoutingOptionsHelper().getRouteMenuAppMode(routingHelper.getAppMode());
            boolean avoidPTTypesCustomized = false;
            for (LocalRoutingParameter parameter : mode.parameters) {
                if (parameter instanceof AvoidPTTypesRoutingParameter) {
                    avoidPTTypesCustomized = true;
                    break;
                }
            }
            if (avoidPTTypesCustomized) {
                PublicTransportNotFoundSettingsWarningCard warningCard = new PublicTransportNotFoundSettingsWarningCard(mapActivity);
                warningCard.setListener(this);
                menuCards.add(warningCard);
            } else {
                PublicTransportNotFoundWarningCard warningCard = new PublicTransportNotFoundWarningCard(mapActivity);
                warningCard.setListener(this);
                menuCards.add(warningCard);
            }
        }
    } else if (routeCalculationInProgress) {
        if (app.getRoutingHelper().isPublicTransportMode()) {
            menuCards.add(new PublicTransportBetaWarningCard(mapActivity));
        } else if (app.getRoutingHelper().isBoatMode()) {
            menuCards.add(new NauticalBridgeHeightWarningCard(mapActivity));
        } else if (hasPrecalculatedMissingMaps || suggestedMapsOnlineSearch) {
            menuCards.add(new SuggestionsMapsDownloadWarningCard(mapActivity));
        } else if (app.getTargetPointsHelper().hasTooLongDistanceToNavigate() && !hasCalculatedMissingMaps) {
            menuCards.add(new LongDistanceWarningCard(mapActivity));
        }
    } else {
        if (hasCalculatedMissingMaps) {
            menuCards.add(new SuggestionsMapsDownloadWarningCard(mapActivity));
        } else {
            // Home/work card
            HomeWorkCard homeWorkCard = new HomeWorkCard(mapActivity);
            menuCards.add(homeWorkCard);
            // Previous route card
            boolean historyEnabled = app.getSettings().NAVIGATION_HISTORY.get();
            if (historyEnabled) {
                TargetPoint startBackup = targetPointsHelper.getPointToStartBackup();
                if (startBackup == null) {
                    startBackup = targetPointsHelper.getMyLocationToStart();
                }
                TargetPoint destinationBackup = targetPointsHelper.getPointToNavigateBackup();
                if (startBackup != null && destinationBackup != null) {
                    PreviousRouteCard previousRouteCard = new PreviousRouteCard(mapActivity);
                    previousRouteCard.setListener(this);
                    menuCards.add(previousRouteCard);
                }
            }
            // Gpx card
            List<SelectedGpxFile> selectedGPXFiles = app.getSelectedGpxHelper().getSelectedGPXFiles();
            final List<GPXFile> gpxFiles = new ArrayList<>();
            for (SelectedGpxFile gs : selectedGPXFiles) {
                if (!gs.isShowCurrentTrack()) {
                    if (gs.getGpxFile().hasRtePt() || gs.getGpxFile().hasTrkPt()) {
                        gpxFiles.add(gs.getGpxFile());
                    }
                }
            }
            if (gpxFiles.size() > 0) {
                TracksCard tracksCard = new TracksCard(mapActivity, gpxFiles);
                tracksCard.setListener(this);
                menuCards.add(tracksCard);
            }
            // Map markers card
            List<MapMarker> mapMarkers = app.getMapMarkersHelper().getMapMarkers();
            if (mapMarkers.size() > 0) {
                MapMarkersCard mapMarkersCard = new MapMarkersCard(mapActivity, mapMarkers);
                menuCards.add(mapMarkersCard);
            }
            // History card
            if (historyEnabled) {
                try {
                    SearchResultCollection res = app.getSearchUICore().getCore().shallowSearch(SearchHistoryAPI.class, "", null, false, false);
                    if (res != null) {
                        List<SearchResult> results = res.getCurrentSearchResults();
                        if (results.size() > 0) {
                            HistoryCard historyCard = new HistoryCard(mapActivity, results);
                            historyCard.setListener(this);
                            menuCards.add(historyCard);
                        }
                    }
                } catch (IOException e) {
                    LOG.error(e);
                }
            }
        }
    }
    applyCardsState(menuCards, this.menuCards);
    this.menuCards = menuCards;
    setBottomShadowVisible(bottomShadowVisible);
    setupCards();
}
Also used : RouteMenuAppModes(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.RouteMenuAppModes) OsmandApplication(net.osmand.plus.OsmandApplication) MapMarker(net.osmand.plus.mapmarkers.MapMarker) PedestrianRouteCard(net.osmand.plus.routepreparationmenu.cards.PedestrianRouteCard) AvoidPTTypesRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.AvoidPTTypesRoutingParameter) SuggestionsMapsDownloadWarningCard(net.osmand.plus.routepreparationmenu.cards.SuggestionsMapsDownloadWarningCard) ArrayList(java.util.ArrayList) TransportRouteResult(net.osmand.router.TransportRouteResult) TargetPoint(net.osmand.plus.helpers.TargetPointsHelper.TargetPoint) OtherLocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.OtherLocalRoutingParameter) LocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter) PublicTransportBetaWarningCard(net.osmand.plus.routepreparationmenu.cards.PublicTransportBetaWarningCard) BaseCard(net.osmand.plus.routepreparationmenu.cards.BaseCard) MapMarkersCard(net.osmand.plus.routepreparationmenu.cards.MapMarkersCard) ArrayList(java.util.ArrayList) List(java.util.List) NauticalBridgeHeightWarningCard(net.osmand.plus.routepreparationmenu.cards.NauticalBridgeHeightWarningCard) TargetPointsHelper(net.osmand.plus.helpers.TargetPointsHelper) MapActivity(net.osmand.plus.activities.MapActivity) TracksCard(net.osmand.plus.routepreparationmenu.cards.TracksCard) PublicTransportNotFoundSettingsWarningCard(net.osmand.plus.routepreparationmenu.cards.PublicTransportNotFoundSettingsWarningCard) PreviousRouteCard(net.osmand.plus.routepreparationmenu.cards.PreviousRouteCard) LongDistanceWarningCard(net.osmand.plus.routepreparationmenu.cards.LongDistanceWarningCard) SearchResult(net.osmand.search.core.SearchResult) RoutingHelper(net.osmand.plus.routing.RoutingHelper) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) PublicTransportNotFoundWarningCard(net.osmand.plus.routepreparationmenu.cards.PublicTransportNotFoundWarningCard) HomeWorkCard(net.osmand.plus.routepreparationmenu.cards.HomeWorkCard) IOException(java.io.IOException) LatLon(net.osmand.data.LatLon) SelectedGpxFile(net.osmand.plus.track.helpers.GpxSelectionHelper.SelectedGpxFile) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) SearchResultCollection(net.osmand.search.SearchUICore.SearchResultCollection) HistoryCard(net.osmand.plus.routepreparationmenu.cards.HistoryCard) GPXFile(net.osmand.GPXUtilities.GPXFile) SimpleRouteCard(net.osmand.plus.routepreparationmenu.cards.SimpleRouteCard) PublicTransportCard(net.osmand.plus.routepreparationmenu.cards.PublicTransportCard)

Example 7 with TransportRouteResult

use of net.osmand.router.TransportRouteResult in project Osmand by osmandapp.

the class MapRouteInfoMenu method getRouteRect.

@NonNull
public QuadRect getRouteRect(@NonNull MapActivity mapActivity) {
    OsmandApplication app = mapActivity.getMyApplication();
    RoutingHelper routingHelper = app.getRoutingHelper();
    QuadRect rect = new QuadRect(0, 0, 0, 0);
    if (isTransportRouteCalculated()) {
        TransportRoutingHelper transportRoutingHelper = app.getTransportRoutingHelper();
        TransportRouteResult result = transportRoutingHelper.getCurrentRouteResult();
        if (result != null) {
            QuadRect transportRouteRect = transportRoutingHelper.getTransportRouteRect(result);
            if (transportRouteRect != null) {
                rect = transportRouteRect;
            }
        }
    } else if (routingHelper.isRouteCalculated()) {
        RouteCalculationResult result = routingHelper.getRoute();
        QuadRect routeRect = RoutingHelperUtils.getRouteRect(app, result);
        if (routeRect != null) {
            rect = routeRect;
        }
    }
    return rect;
}
Also used : OsmandApplication(net.osmand.plus.OsmandApplication) RouteCalculationResult(net.osmand.plus.routing.RouteCalculationResult) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) TransportRouteResult(net.osmand.router.TransportRouteResult) RoutingHelper(net.osmand.plus.routing.RoutingHelper) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) QuadRect(net.osmand.data.QuadRect) NonNull(androidx.annotation.NonNull)

Example 8 with TransportRouteResult

use of net.osmand.router.TransportRouteResult in project Osmand by osmandapp.

the class RouteDetailsFragment method updateCards.

private void updateCards() {
    MapActivity mapActivity = getMapActivity();
    if (mapActivity != null) {
        OsmandApplication app = mapActivity.getMyApplication();
        RoutingHelper routingHelper = app.getRoutingHelper();
        LinearLayout cardsContainer = getCardsContainer();
        cardsContainer.removeAllViews();
        if (routeId != -1) {
            List<TransportRouteResult> routes = routingHelper.getTransportRoutingHelper().getRoutes();
            if (routes != null && routes.size() > routeId) {
                TransportRouteResult routeResult = routingHelper.getTransportRoutingHelper().getRoutes().get(routeId);
                TransportRoutingHelper transportRoutingHelper = app.getTransportRoutingHelper();
                PublicTransportCard card = new PublicTransportCard(mapActivity, transportRoutingHelper.getStartLocation(), transportRoutingHelper.getEndLocation(), routeResult, routeId);
                card.setShowTopShadow(false);
                card.setShowBottomShadow(false);
                card.setShowDivider(false);
                card.setTransparentBackground(true);
                card.setTransportCardListener(this);
                card.setListener(this);
                transportCard = card;
                menuCards.add(card);
                cardsContainer.addView(card.build(mapActivity));
                buildRowDivider(cardsContainer, false);
                buildTransportRouteRow(cardsContainer, routeResult, true);
                buildRowDivider(cardsContainer, false);
            } else {
                transportCard = null;
                makeGpx();
                createRouteStatisticCards(cardsContainer);
                createRouteDirectionsCard(cardsContainer);
            }
        }
    }
}
Also used : OsmandApplication(net.osmand.plus.OsmandApplication) TransportRouteResult(net.osmand.router.TransportRouteResult) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) TransportRoutingHelper(net.osmand.plus.routing.TransportRoutingHelper) RoutingHelper(net.osmand.plus.routing.RoutingHelper) LinearLayout(android.widget.LinearLayout) MapActivity(net.osmand.plus.activities.MapActivity) PublicTransportCard(net.osmand.plus.routepreparationmenu.cards.PublicTransportCard)

Aggregations

TransportRouteResult (net.osmand.router.TransportRouteResult)8 OsmandApplication (net.osmand.plus.OsmandApplication)5 TransportRoutingHelper (net.osmand.plus.routing.TransportRoutingHelper)4 ArrayList (java.util.ArrayList)3 LatLon (net.osmand.data.LatLon)3 MapActivity (net.osmand.plus.activities.MapActivity)3 PublicTransportCard (net.osmand.plus.routepreparationmenu.cards.PublicTransportCard)3 RoutingHelper (net.osmand.plus.routing.RoutingHelper)3 View (android.view.View)2 ImageView (android.widget.ImageView)2 List (java.util.List)2 TransportRouteResultSegment (net.osmand.router.TransportRoutePlanner.TransportRouteResultSegment)2 Bundle (android.os.Bundle)1 TypedValue (android.util.TypedValue)1 FrameLayout (android.widget.FrameLayout)1 GridView (android.widget.GridView)1 LinearLayout (android.widget.LinearLayout)1 TextView (android.widget.TextView)1 NonNull (androidx.annotation.NonNull)1 Nullable (androidx.annotation.Nullable)1