/
srv
/
osrm
/
osrm-backend
/
src
/
engine
/
plugins
/
/srv/osrm/osrm-backend/src/engine/plugins
mkdir
upload
Name
Size
Mode
Actions
match.cpp
13324
0644
edit
dl
rm
nearest.cpp
1918
0644
edit
dl
rm
table.cpp
6562
0644
edit
dl
rm
tile.cpp
27827
0644
edit
dl
rm
trip.cpp
11878
0644
edit
dl
rm
viaroute.cpp
7919
0644
edit
dl
rm
Edit:
/srv/osrm/osrm-backend/src/engine/plugins/nearest.cpp
(1918B)
#include "engine/plugins/nearest.hpp" #include "engine/api/nearest_api.hpp" #include "engine/api/nearest_parameters.hpp" #include <string> #include <boost/assert.hpp> #include <boost/numeric/conversion/cast.hpp> namespace osrm::engine::plugins { NearestPlugin::NearestPlugin(const int max_results_, const boost::optional<double> default_radius_) : BasePlugin(default_radius_), max_results{max_results_} { } Status NearestPlugin::HandleRequest(const RoutingAlgorithmsInterface &algorithms, const api::NearestParameters ¶ms, osrm::engine::api::ResultT &result) const { BOOST_ASSERT(params.IsValid()); if (!CheckAlgorithms(params, algorithms, result)) return Status::Error; const auto &facade = algorithms.GetFacade(); if (max_results > 0 && (boost::numeric_cast<std::int64_t>(params.number_of_results) > max_results)) { return Error("TooBig", "Number of results " + std::to_string(params.number_of_results) + " is higher than current maximum (" + std::to_string(max_results) + ")", result); } if (!CheckAllCoordinates(params.coordinates)) return Error("InvalidOptions", "Coordinates are invalid", result); if (params.coordinates.size() != 1) { return Error("InvalidOptions", "Only one input coordinate is supported", result); } auto phantom_nodes = GetPhantomNodes(facade, params, params.number_of_results); if (phantom_nodes.front().size() == 0) { return Error("NoSegment", "Could not find a matching segments for coordinate", result); } BOOST_ASSERT(phantom_nodes.front().size() > 0); api::NearestAPI nearest_api(facade, params); nearest_api.MakeResponse(phantom_nodes, result); return Status::Ok; } } // namespace osrm::engine::plugins
Save
cmd:
run