Welcome to mirror list, hosted at ThFree Co, Russian Federation.

geometry_utils.cpp « search - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c8c6db1ebfced75d72d12ceb536d2b9f55378d5e (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
#include "geometry_utils.hpp"

#include "geometry/mercator.hpp"
#include "indexer/scales.hpp"


namespace search
{

double PointDistance(m2::PointD const & a, m2::PointD const & b)
{
  return MercatorBounds::DistanceOnEarth(a, b);
}

bool IsEqualMercator(m2::RectD const & r1, m2::RectD const & r2, double epsMeters)
{
  double const eps = epsMeters * MercatorBounds::degreeInMetres;
  return m2::IsEqual(r1, r2, eps, eps);
}

// 11.5 - lower bound for rect when we need to inflate it
// 1.5 - inflate delta for viewport scale
// 7 - query scale depth to cache viewport features

bool GetInflatedViewport(m2::RectD & viewport)
{
  double level = scales::GetScaleLevelD(viewport);
  if (level < 11.5)
    return false;
  if (level > 16.5)
    level = 16.5;

  viewport = scales::GetRectForLevel(level - 1.5, viewport.Center());
  return true;
}

int GetQueryIndexScale(m2::RectD const & viewport)
{
  return scales::GetScaleLevel(viewport) + 7;
}

} // namespace search