Skip to content

Commit

Permalink
Merge pull request #1485 from Framstag/vyskocil-permit-multiple-via-i…
Browse files Browse the repository at this point in the history
…n-routing-demo

Permit multiple --via arguments in routing demo
  • Loading branch information
Framstag committed Aug 13, 2023
2 parents 315451e + c0afb6e commit 2cf6cee
Showing 1 changed file with 31 additions and 30 deletions.
61 changes: 31 additions & 30 deletions Demos/src/Routing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,22 +61,22 @@

struct Arguments
{
bool help=false;
std::string router=osmscout::RoutingService::DEFAULT_FILENAME_BASE;
osmscout::Vehicle vehicle=osmscout::Vehicle::vehicleCar;
std::string gpx;
std::string databaseDirectory;
osmscout::GeoCoord start;
osmscout::GeoCoord via = osmscout::GeoCoord(1E10,1E10); // Initialize with invalid coordinates
osmscout::GeoCoord target;
bool debug=false;
bool dataDebug=false;
bool routeDebug=false;
std::string routeJson;

osmscout::Distance penaltySameType=osmscout::Meters(40);
osmscout::Distance penaltyDifferentType=osmscout::Meters(250);
osmscout::HourDuration maxPenalty=std::chrono::seconds(10);
bool help=false;
std::string router=osmscout::RoutingService::DEFAULT_FILENAME_BASE;
osmscout::Vehicle vehicle=osmscout::Vehicle::vehicleCar;
std::string gpx;
std::string databaseDirectory;
osmscout::GeoCoord start;
std::vector<osmscout::GeoCoord> via;
osmscout::GeoCoord target;
bool debug=false;
bool dataDebug=false;
bool routeDebug=false;
std::string routeJson;

osmscout::Distance penaltySameType=osmscout::Meters(40);
osmscout::Distance penaltyDifferentType=osmscout::Meters(250);
osmscout::HourDuration maxPenalty=std::chrono::seconds(10);
};

class ConsoleRoutingProgress : public osmscout::RoutingProgress
Expand Down Expand Up @@ -753,7 +753,7 @@ int main(int argc, char* argv[])


argParser.AddOption(osmscout::CmdLineGeoCoordOption([&args](const osmscout::GeoCoord& value) {
args.via=value;
args.via.push_back(value);
}),
"via",
"add a via location coordinate");
Expand Down Expand Up @@ -875,20 +875,21 @@ int main(int argc, char* argv[])

osmscout::RoutingResult result;

if (args.via.IsValid()) {
std::cout << "Using 'CalculateRouteViaCoords' method" << std::endl;
std::vector<osmscout::GeoCoord> via = { args.start, args.via, args.target };
result=router->CalculateRouteViaCoords(*routingProfile,
via,
osmscout::Kilometers(1),
parameter);

if (args.via.size() > 0) {
std::cout << "Using 'CalculateRouteViaCoords' method" << std::endl;
args.via.insert(args.via.begin(), args.start);
args.via.push_back(args.target);
result=router->CalculateRouteViaCoords(*routingProfile,
args.via,
osmscout::Kilometers(1),
parameter);

} else {
std::cout << "Using 'CalculateRoute' method" << std::endl;
result=router->CalculateRoute(*routingProfile,
start,
target,
parameter);
std::cout << "Using 'CalculateRoute' method" << std::endl;
result=router->CalculateRoute(*routingProfile,
start,
target,
parameter);
}

if (!result.Success()) {
Expand Down

0 comments on commit 2cf6cee

Please sign in to comment.