From ac79b63b69e78918f9dd378fefc8ab439a5bc63f Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 3 Dec 2015 18:46:57 +0300 Subject: [PATCH] New getter for visible features. TODO: Refactor existing getters to a common interface. --- map/framework.cpp | 17 +++++++++++++++++ map/framework.hpp | 2 ++ 2 files changed, 19 insertions(+) diff --git a/map/framework.cpp b/map/framework.cpp index 05262a9308..f5a0ded931 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1627,6 +1627,23 @@ bool Framework::GetVisiblePOI(m2::PointD const & glbPoint, search::AddressInfo & return true; } +bool Framework::GetVisiblePOI(m2::PointD const & ptMercator, FeatureType & outPOI) const +{ + ASSERT(m_drapeEngine != nullptr, ()); + FeatureID const fid = m_drapeEngine->GetVisiblePOI(ptMercator); + if (!fid.IsValid()) + return false; + + // Note: all parse methods should be called with guard alive. + Index::FeaturesLoaderGuard guard(m_model.GetIndex(), fid.m_mwmId); + guard.GetFeatureByIndex(fid.m_index, outPOI); + outPOI.ParseHeader2(); + outPOI.ParseGeometry(FeatureType::BEST_GEOMETRY); + outPOI.ParseTriangles(FeatureType::BEST_GEOMETRY); + outPOI.ParseMetadata(); + return true; +} + m2::PointD Framework::GetVisiblePOI(FeatureID const & id, search::AddressInfo & info, feature::Metadata & metadata) const { ASSERT(id.IsValid(), ()); diff --git a/map/framework.hpp b/map/framework.hpp index 1ef91ba895..43ac3e7778 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -486,6 +486,8 @@ private: public: bool GetVisiblePOI(m2::PointD const & glbPoint, search::AddressInfo & info, feature::Metadata & metadata) const; + // TODO(AlexZ): Refactor similar getters to share common interface. + bool GetVisiblePOI(m2::PointD const & ptMercator, FeatureType & outPOI) const; m2::PointD GetVisiblePOI(FeatureID const & id, search::AddressInfo & info, feature::Metadata & metadata) const; void FindClosestPOIMetadata(m2::PointD const & pt, feature::Metadata & metadata) const;