Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)

To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
This commit is contained in:
Konstantin Pastbin
2025-04-13 16:37:30 +07:00
commit e3e4a1985a
12931 changed files with 13195100 additions and 0 deletions

63
map/elevation_info.cpp Normal file
View File

@@ -0,0 +1,63 @@
#include "map/elevation_info.hpp"
#include "base/logging.hpp"
#include "geometry/mercator.hpp"
using namespace geometry;
using namespace mercator;
ElevationInfo::ElevationInfo(std::vector<GeometryLine> const & lines)
{
// Concatenate all segments.
for (size_t lineIndex = 0; lineIndex < lines.size(); ++lineIndex)
{
auto const & line = lines[lineIndex];
if (line.empty())
continue;
if (lineIndex > 0)
m_segmentsDistances.emplace_back(m_points.back().m_distance);
AddPoints(line, true /* new segment */);
}
/// @todo(KK) Implement difficulty calculation.
m_difficulty = Difficulty::Unknown;
}
void ElevationInfo::AddGpsPoints(GpsPoints const & points)
{
GeometryLine line;
line.reserve(points.size());
for (auto const & point : points)
line.emplace_back(FromLatLon(point.m_latitude, point.m_longitude), point.m_altitude);
AddPoints(line);
}
void ElevationInfo::AddPoints(GeometryLine const & line, bool isNewSegment)
{
if (line.empty())
return;
double distance = m_points.empty() ? 0 : m_points.back().m_distance;
for (size_t pointIndex = 0; pointIndex < line.size(); ++pointIndex)
{
auto const & point = line[pointIndex];
if (m_points.empty())
{
m_points.emplace_back(point, distance);
continue;
}
if (isNewSegment && pointIndex == 0)
{
m_points.emplace_back(point, distance);
continue;
}
auto const & previousPoint = m_points.back().m_point;
distance += mercator::DistanceOnEarth(previousPoint.GetPoint(), point.GetPoint());
m_points.emplace_back(point, distance);
}
}