forked from organicmaps/organicmaps
PR fixes
This commit is contained in:
parent
d04626966c
commit
ff30928c9c
3 changed files with 26 additions and 23 deletions
|
@ -184,31 +184,31 @@ double CrossMwmGraph::HeuristicCostEstimate(BorderCross const & v, BorderCross c
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ConvertToSingleRouterTasks(vector<BorderCross> const & graphCrosses,
|
||||
void ConvertToSingleRouterTasks(vector<BorderCross> const & graphCrosses,
|
||||
FeatureGraphNode const & startGraphNode,
|
||||
FeatureGraphNode const & finalGraphNode,
|
||||
TCheckedPath & route)
|
||||
{
|
||||
route.clear();
|
||||
for (size_t i = 0; i < graphCrosses.size() - 1; ++i)
|
||||
for (size_t i = 0; i + 1 < graphCrosses.size(); ++i)
|
||||
{
|
||||
route.emplace_back(graphCrosses[i].toNode.node, graphCrosses[i + 1].fromNode.node,
|
||||
graphCrosses[i].toNode.mwmName);
|
||||
}
|
||||
|
||||
if (!route.empty())
|
||||
{
|
||||
//Start virtual node always will be becase they are not compaired in A* algo.
|
||||
route.front().startNode = startGraphNode;
|
||||
if (route.empty())
|
||||
return;
|
||||
|
||||
// Stop point lays on out edge, and we have no virtual edge to unpack.
|
||||
if (route.back().startNode.mwmName != finalGraphNode.mwmName)
|
||||
route.emplace_back(RoutePathCross(graphCrosses.back().toNode.node,
|
||||
graphCrosses.back().toNode.node,
|
||||
graphCrosses.back().toNode.mwmName));
|
||||
// Starts of virtual nodes are always present because they are not compaired in A* algo.
|
||||
route.front().startNode = startGraphNode;
|
||||
|
||||
route.back().finalNode = finalGraphNode;
|
||||
}
|
||||
// Stop point lays on out edge, and we have no virtual edge to unpack.
|
||||
if (route.back().startNode.mwmName != finalGraphNode.mwmName)
|
||||
route.emplace_back(graphCrosses.back().toNode.node,
|
||||
graphCrosses.back().toNode.node,
|
||||
graphCrosses.back().toNode.mwmName);
|
||||
|
||||
route.back().finalNode = finalGraphNode;
|
||||
}
|
||||
|
||||
} // namespace routing
|
||||
|
|
|
@ -114,7 +114,10 @@ private:
|
|||
mutable unordered_map<m2::PointD, BorderCross, m2::PointD::Hash> m_cachedNextNodes;
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
// Helper functions.
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
/// Convertor from CrossMwmGraph to cross mwm route task.
|
||||
void ConvertToSingleRouterTasks(vector<BorderCross> const & graphCrosses,
|
||||
FeatureGraphNode const & startGraphNode,
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#include "testing/testing.hpp"
|
||||
|
||||
#include "routing/cross_routing_context.hpp"
|
||||
#include "routing/cross_mwm_road_graph.hpp"
|
||||
#include "routing/cross_mwm_router.hpp"
|
||||
#include "routing/cross_routing_context.hpp"
|
||||
|
||||
#include "coding/reader.hpp"
|
||||
#include "coding/writer.hpp"
|
||||
|
@ -15,11 +15,11 @@ namespace
|
|||
UNIT_TEST(TestCrossRouteConverter)
|
||||
{
|
||||
vector<BorderCross> graphCrosses;
|
||||
CrossNode a(1, "aMap", {0,0}), b(2, "aMap", {2, 2});
|
||||
CrossNode c(3, "bMap", {3,3}), d(3, "bMap", {4, 4});
|
||||
graphCrosses.emplace_back(BorderCross(a, b));
|
||||
graphCrosses.emplace_back(BorderCross(b, c));
|
||||
graphCrosses.emplace_back(BorderCross(c, d));
|
||||
CrossNode const a(1, "aMap", {0, 0}), b(2, "aMap", {2, 2});
|
||||
CrossNode const c(3, "bMap", {3, 3}), d(3, "bMap", {4, 4});
|
||||
graphCrosses.emplace_back(a, b);
|
||||
graphCrosses.emplace_back(b, c);
|
||||
graphCrosses.emplace_back(c, d);
|
||||
FeatureGraphNode startGraphNode;
|
||||
startGraphNode.node.forward_node_id = 5;
|
||||
startGraphNode.mwmName = "aMap";
|
||||
|
@ -40,10 +40,10 @@ UNIT_TEST(TestCrossRouteConverter)
|
|||
UNIT_TEST(TestCrossRouteConverterEdgeCase)
|
||||
{
|
||||
vector<BorderCross> graphCrosses;
|
||||
CrossNode a(1, "aMap", {0,0}), b(2, "aMap", {2, 2});
|
||||
CrossNode c(3, "bMap", {3,3});
|
||||
graphCrosses.emplace_back(BorderCross(a, b));
|
||||
graphCrosses.emplace_back(BorderCross(b, c));
|
||||
CrossNode const a(1, "aMap", {0, 0}), b(2, "aMap", {2, 2});
|
||||
CrossNode const c(3, "bMap", {3, 3});
|
||||
graphCrosses.emplace_back(a, b);
|
||||
graphCrosses.emplace_back(b, c);
|
||||
FeatureGraphNode startGraphNode;
|
||||
startGraphNode.node.forward_node_id = 5;
|
||||
startGraphNode.mwmName = "aMap";
|
||||
|
|
Loading…
Add table
Reference in a new issue