blob: fa9cc3a02eae4773ecbc862e38535a1fbb91c13f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#include "map/track.hpp"
#include "geometry/mercator.hpp"
#include "drape/color.hpp"
#include "geometry/distance_on_sphere.hpp"
Track::Track(Track::PolylineD const & polyline, Track::Params const & p)
: m_polyline(polyline)
, m_params(p)
{
ASSERT_GREATER(m_polyline.GetSize(), 1, ());
}
string const & Track::GetName() const
{
return m_params.m_name;
}
m2::RectD Track::GetLimitRect() const
{
return m_polyline.GetLimitRect();
}
double Track::GetLengthMeters() const
{
double res = 0.0;
PolylineD::TIter i = m_polyline.Begin();
double lat1 = MercatorBounds::YToLat(i->y);
double lon1 = MercatorBounds::XToLon(i->x);
for (++i; i != m_polyline.End(); ++i)
{
double const lat2 = MercatorBounds::YToLat(i->y);
double const lon2 = MercatorBounds::XToLon(i->x);
res += ms::DistanceOnEarth(lat1, lon1, lat2, lon2);
lat1 = lat2;
lon1 = lon2;
}
return res;
}
size_t Track::GetLayerCount() const
{
return m_params.m_colors.size();
}
dp::Color const & Track::GetColor(size_t layerIndex) const
{
return m_params.m_colors[layerIndex].m_color;
}
float Track::GetWidth(size_t layerIndex) const
{
return m_params.m_colors[layerIndex].m_lineWidth;
}
float Track::GetLayerDepth(size_t layerIndex) const
{
return 0 + layerIndex * 10;
}
size_t Track::GetPointCount() const
{
return m_polyline.GetSize();
}
m2::PointD const & Track::GetPoint(size_t pointIndex) const
{
return m_polyline.GetPoint(pointIndex);
}
|