MCPcopy Create free account
hub / github.com/comaps/comaps / InsertRoute

Method InsertRoute

libs/map/routing_manager.cpp:759–867  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

757}
758
759bool RoutingManager::InsertRoute(Route const & route)
760{
761 if (!m_drapeEngine)
762 return false;
763
764 // TODO: Now we always update whole route, so we need to remove previous one.
765 RemoveRoute(false /* deactivateFollowing */);
766
767 auto numMwmIds = make_shared<NumMwmIds>();
768 m_delegate.RegisterCountryFilesOnRoute(numMwmIds);
769 auto const getMwmId = [this, numMwmIds](routing::NumMwmId numMwmId)
770 { return m_callbacks.m_dataSourceGetter().GetMwmIdByCountryFile(numMwmIds->GetFile(numMwmId)); };
771
772 RoadWarningsCollection roadWarnings;
773 vector<std::pair<m2::PointD, FeatureID>> trafficLights;
774
775 bool const isTransitRoute = (m_currentRouterType == RouterType::Transit);
776 shared_ptr<TransitRouteDisplay> transitRouteDisplay;
777 if (isTransitRoute)
778 {
779 transitRouteDisplay = make_shared<TransitRouteDisplay>(
780 *m_transitReadManager, getMwmId, m_callbacks.m_stringsBundleGetter, m_bmManager, m_transitSymbolSizes);
781 }
782
783 vector<RouteSegment> segments;
784 double distance = 0.0;
785 auto const subroutesCount = route.GetSubrouteCount();
786 for (size_t subrouteIndex = route.GetCurrentSubrouteIdx(); subrouteIndex < subroutesCount; ++subrouteIndex)
787 {
788 route.GetSubrouteInfo(subrouteIndex, segments);
789
790 auto const startPt = route.GetSubrouteAttrs(subrouteIndex).GetStart().GetPoint();
791 auto subroute = CreateDrapeSubroute(segments, startPt, distance,
792 static_cast<double>(subroutesCount - subrouteIndex - 1), m_currentRouterType);
793 if (!subroute)
794 continue;
795 distance = segments.back().GetDistFromBeginningMerc();
796 switch (m_currentRouterType)
797 {
798 case RouterType::Vehicle:
799 {
800 subroute->m_routeType = df::RouteType::Car;
801 subroute->AddStyle(df::SubrouteStyle(df::kRouteColor, df::kRouteOutlineColor));
802 FillTrafficForRendering(segments, subroute->m_traffic);
803 FillTurnsDistancesForRendering(segments, subroute->m_baseDistance, subroute->m_turns);
804 break;
805 }
806 case RouterType::Transit:
807 {
808 subroute->m_routeType = df::RouteType::Transit;
809 if (!transitRouteDisplay->ProcessSubroute(segments, *subroute.get()))
810 continue;
811 break;
812 }
813 case RouterType::Pedestrian:
814 {
815 subroute->m_routeType = df::RouteType::Pedestrian;
816 subroute->AddStyle(df::SubrouteStyle(df::kRoutePedestrian, df::RoutePattern(4.0, 2.0)));

Callers

nothing calls this directly

Calls 15

CreateDrapeSubrouteFunction · 0.85
SubrouteStyleClass · 0.85
FillTrafficForRenderingFunction · 0.85
RoutePatternClass · 0.85
GetMwmIdByCountryFileMethod · 0.80
GetFileMethod · 0.80
GetSubrouteCountMethod · 0.80
GetCurrentSubrouteIdxMethod · 0.80
GetSubrouteInfoMethod · 0.80

Tested by

no test coverage detected