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

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2012-01-30 21:56:06 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:32:41 +0300
commit734df51bc1334176745a2a9e0099029505280c4d (patch)
treecbcb1c3a4a6a9b68c9873cb9d93e5712dd8f53cc /indexer/feature_utils.cpp
parent187413d181b9e2de4b69867a732112ece1e908e9 (diff)
[search] Reduce search rank for non-USA states.
Diffstat (limited to 'indexer/feature_utils.cpp')
-rw-r--r--indexer/feature_utils.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/indexer/feature_utils.cpp b/indexer/feature_utils.cpp
index a72ec90090..9cbfc28550 100644
--- a/indexer/feature_utils.cpp
+++ b/indexer/feature_utils.cpp
@@ -83,7 +83,7 @@ public:
return scales::GetRectForLevel(scale, centerXY, 1.0);
}
- uint8_t GetSearchRank(TypesHolder const & types, uint32_t population) const
+ uint8_t GetSearchRank(TypesHolder const & types, m2::PointD const & pt, uint32_t population) const
{
for (size_t i = 0; i < types.Size(); ++i)
{
@@ -93,8 +93,27 @@ public:
population = max(population, static_cast<uint32_t>(1000));
else if (types[i] == m_TypeTown || IsEqual(types[i], m_TypeCounty))
population = max(population, static_cast<uint32_t>(10000));
- else if (types[i] == m_TypeCity || types[i] == m_TypeState)
- population = max(population, static_cast<uint32_t>(100000));
+ else if (types[i] == m_TypeState)
+ {
+ m2::RectD const usaRect(-125.73195962769162293, 25.168771674082393019,
+ -66.925073086214325713, 56.956377399113392812);
+ if (usaRect.IsPointInside(pt))
+ {
+ //LOG(LINFO, ("USA state population = ", population));
+ // Get rank equal to city for USA's states.
+ population = max(population, static_cast<uint32_t>(500000));
+ }
+ else
+ {
+ //LOG(LINFO, ("Other state population = ", population));
+ // Reduce rank for other states.
+ population = population / 10;
+ population = max(population, static_cast<uint32_t>(10000));
+ population = min(population, static_cast<uint32_t>(500000));
+ }
+ }
+ else if (types[i] == m_TypeCity)
+ population = max(population, static_cast<uint32_t>(500000));
else if (types[i] == m_TypeCityCapital)
population = max(population, static_cast<uint32_t>(1000000));
else if (types[i] == m_TypeCountry)
@@ -174,9 +193,9 @@ m2::RectD GetFeatureViewport(TypesHolder const & types, m2::RectD const & limitR
return impl::GetFeatureEstimator().GetViewport(types, limitRect);
}
-uint8_t GetSearchRank(TypesHolder const & types, uint32_t population)
+uint8_t GetSearchRank(TypesHolder const & types, m2::PointD const & pt, uint32_t population)
{
- return impl::GetFeatureEstimator().GetSearchRank(types, population);
+ return impl::GetFeatureEstimator().GetSearchRank(types, pt, population);
}
} // namespace feature