diff --git a/include/util/rectangle.hpp b/include/util/rectangle.hpp index fd0f87188..ca7d84b68 100644 --- a/include/util/rectangle.hpp +++ b/include/util/rectangle.hpp @@ -83,7 +83,7 @@ struct RectangleInt2D // This code assumes that we are operating in euclidean space! // That means if you just put unprojected lat/lon in here you will // get invalid results. - double GetMinSquaredDist(const Coordinate location) const + std::uint64_t GetMinSquaredDist(const Coordinate location) const { const bool is_contained = Contains(location); if (is_contained) @@ -116,7 +116,7 @@ struct RectangleInt2D BOOST_ASSERT(d != INVALID); - double min_dist = std::numeric_limits::max(); + std::uint64_t min_dist = std::numeric_limits::max(); switch (d) { case NORTH: @@ -155,7 +155,7 @@ struct RectangleInt2D break; } - BOOST_ASSERT(min_dist < std::numeric_limits::max()); + BOOST_ASSERT(min_dist < std::numeric_limits::max()); return min_dist; } diff --git a/include/util/static_rtree.hpp b/include/util/static_rtree.hpp index a1e3184a5..a87e103c9 100644 --- a/include/util/static_rtree.hpp +++ b/include/util/static_rtree.hpp @@ -101,7 +101,7 @@ class StaticRTree return other.squared_min_dist < squared_min_dist; } - double squared_min_dist; + std::uint64_t squared_min_dist; QueryNodeType node; }; @@ -408,7 +408,7 @@ class StaticRTree // initialize queue with root element std::priority_queue traversal_queue; - traversal_queue.push(QueryCandidate{0.f, m_search_tree[0]}); + traversal_queue.push(QueryCandidate{0, m_search_tree[0]}); while (!traversal_queue.empty()) { @@ -421,8 +421,8 @@ class StaticRTree current_query_node.node.template get(); if (current_tree_node.child_is_on_disk) { - ExploreLeafNode(current_tree_node.children[0], projected_coordinate, - traversal_queue); + ExploreLeafNode(current_tree_node.children[0], fixed_projected_coordinate, + projected_coordinate, traversal_queue); } else { @@ -459,6 +459,7 @@ class StaticRTree private: template void ExploreLeafNode(const std::uint32_t leaf_id, + const Coordinate projected_input_coordinate_fixed, const FloatCoordinate &projected_input_coordinate, QueueT &traversal_queue) { @@ -480,8 +481,7 @@ class StaticRTree projected_input_coordinate); const auto squared_distance = coordinate_calculation::squaredEuclideanDistance( - projected_nearest, projected_input_coordinate); - + projected_input_coordinate_fixed, projected_nearest); // distance must be non-negative BOOST_ASSERT(0. <= squared_distance); traversal_queue.push(