From 573f1104926d3f8db5596969cdd7d5c0115c5642 Mon Sep 17 00:00:00 2001 From: "muteeb.ali@synergy-it.com" Date: Fri, 4 Oct 2024 13:14:33 +0500 Subject: [PATCH] #7047: Nearest api returning node with id 0 --- include/engine/api/nearest_api.hpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/engine/api/nearest_api.hpp b/include/engine/api/nearest_api.hpp index 0e2a9edbf..779e29356 100644 --- a/include/engine/api/nearest_api.hpp +++ b/include/engine/api/nearest_api.hpp @@ -149,13 +149,23 @@ class NearestAPI final : public BaseAPI facade.GetOSMNodeIDOfNode(geometry(phantom_node.fwd_segment_position + 1)); from_node = static_cast(osm_node_id); } - else if (phantom_node.forward_segment_id.enabled && phantom_node.fwd_segment_position > 0) + else if (phantom_node.forward_segment_id.enabled) { // In the case of one way, rely on forward segment only - auto osm_node_id = - facade.GetOSMNodeIDOfNode(forward_geometry(phantom_node.fwd_segment_position - 1)); + if (phantom_node.fwd_segment_position > 0) + { + auto osm_node_id = facade.GetOSMNodeIDOfNode( + forward_geometry(phantom_node.fwd_segment_position - 1)); from_node = static_cast(osm_node_id); } + else if (phantom_node.fwd_segment_position == 0) + { + auto osm_node_id = facade.GetOSMNodeIDOfNode( + forward_geometry(phantom_node.fwd_segment_position + 1)); + from_node = to_node; + to_node = static_cast(osm_node_id); + } + } return std::make_pair(from_node, to_node); }