MCPcopy Create free account
hub / github.com/comaps/comaps / UpdateElevationMyPosition

Method UpdateElevationMyPosition

libs/map/bookmark_manager.cpp:810–849  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

808}
809
810void BookmarkManager::UpdateElevationMyPosition(kml::TrackId const & trackId)
811{
812 CHECK_THREAD_CHECKER(m_threadChecker, ());
813
814 static_assert(TrackSelectionMark::kInvalidDistance < 0);
815 double myPositionDistance = TrackSelectionMark::kInvalidDistance;
816 if (m_myPositionMark->HasPosition())
817 {
818 double constexpr kEps = 1e-5;
819 if (m_lastElevationMyPosition.EqualDxDy(m_myPositionMark->GetPivot(), kEps))
820 return;
821 m_lastElevationMyPosition = m_myPositionMark->GetPivot();
822
823 auto const snapRect =
824 mercator::RectByCenterXYAndSizeInMeters(m_myPositionMark->GetPivot(), kMyPositionTrackSnapInMeters);
825 auto const selectionInfo =
826 FindNearestTrack(snapRect, [trackId](Track const * track) { return track->GetId() == trackId; });
827 if (selectionInfo.m_trackId == trackId)
828 myPositionDistance = selectionInfo.m_distFromBegM;
829 }
830 else
831 {
832 m_lastElevationMyPosition = m2::PointD::Zero();
833 }
834
835 auto const markId = GetTrackSelectionMarkId(trackId);
836 if (markId == kml::kInvalidTrackId)
837 return;
838
839 auto es = GetEditSession();
840 auto trackSelectionMark = GetMarkForEdit<TrackSelectionMark>(markId);
841
842 double constexpr kEpsMeters = 1e-2;
843 if (!AlmostEqualAbs(trackSelectionMark->GetMyPositionDistance(), myPositionDistance, kEpsMeters))
844 {
845 trackSelectionMark->SetMyPositionDistance(myPositionDistance);
846 if (m_elevationMyPositionChanged)
847 m_elevationMyPositionChanged();
848 }
849}
850
851double BookmarkManager::GetElevationMyPosition(kml::TrackId const & trackId) const
852{

Callers 2

OnUserPositionChangedMethod · 0.80
OnTapEventMethod · 0.80

Calls 9

ZeroFunction · 0.85
HasPositionMethod · 0.80
GetMyPositionDistanceMethod · 0.80
SetMyPositionDistanceMethod · 0.80
AlmostEqualAbsFunction · 0.50
EqualDxDyMethod · 0.45
GetPivotMethod · 0.45
GetIdMethod · 0.45

Tested by

no test coverage detected