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:
-rw-r--r--map/framework.cpp44
-rw-r--r--search/engine.cpp2
-rw-r--r--search/intermediate_result.cpp9
-rw-r--r--search/processor.cpp13
-rw-r--r--search/search_engine_pylib/api.cpp4
-rw-r--r--search/search_integration_tests/downloader_search_test.cpp6
-rw-r--r--search/search_integration_tests/processor_test.cpp8
-rw-r--r--search/search_params.cpp35
-rw-r--r--search/search_params.hpp41
-rw-r--r--search/search_quality/features_collector_tool/features_collector_tool.cpp4
-rw-r--r--search/search_tests_support/test_search_request.cpp4
11 files changed, 77 insertions, 93 deletions
diff --git a/map/framework.cpp b/map/framework.cpp
index 09e428f08e..7290d056d1 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -117,7 +117,7 @@ char const kAllow3dKey[] = "Allow3d";
char const kAllow3dBuildingsKey[] = "Buildings3d";
char const kAllowAutoZoom[] = "AutoZoom";
-double const kDistEqualQuery = 100.0;
+double const kDistEqualQueryMeters = 100.0;
// Must correspond SearchMarkType.
vector<string> kSearchMarks =
@@ -1100,10 +1100,10 @@ bool Framework::SearchEverywhere(search::EverywhereSearchParams const & params)
{
search::SearchParams p;
p.m_query = params.m_query;
- p.SetInputLocale(params.m_inputLocale);
- p.SetForceSearch(true);
- p.SetMode(search::Mode::Everywhere);
- p.SetSuggestsEnabled(true);
+ p.m_inputLocale = params.m_inputLocale;
+ p.m_mode = search::Mode::Everywhere;
+ p.m_forceSearch = true;
+ p.m_suggestsEnabled = true;
p.m_onResults = [params](search::Results const & results) {
if (params.m_onResults)
GetPlatform().RunOnGuiThread([params, results]() { params.m_onResults(results); });
@@ -1117,10 +1117,10 @@ bool Framework::SearchInViewport(search::ViewportSearchParams const & params)
{
search::SearchParams p;
p.m_query = params.m_query;
- p.SetInputLocale(params.m_inputLocale);
- p.SetForceSearch(false);
- p.SetMode(search::Mode::Viewport);
- p.SetSuggestsEnabled(false);
+ p.m_inputLocale = params.m_inputLocale;
+ p.m_mode = search::Mode::Viewport;
+ p.m_forceSearch = false;
+ p.m_suggestsEnabled = false;
p.m_onStarted = [params]() {
if (params.m_onStarted)
@@ -1143,9 +1143,9 @@ bool Framework::SearchInDownloader(DownloaderSearchParams const & params)
search::SearchParams p;
p.m_query = params.m_query;
p.m_inputLocale = params.m_inputLocale;
- p.SetMode(search::Mode::Downloader);
- p.SetSuggestsEnabled(false);
- p.SetForceSearch(true);
+ p.m_mode = search::Mode::Downloader;
+ p.m_forceSearch = true;
+ p.m_suggestsEnabled = false;
p.m_onResults = search::DownloaderSearchCallback(
static_cast<search::DownloaderSearchCallback::Delegate &>(*this), m_model.GetIndex(),
GetCountryInfoGetter(), GetStorage(), params);
@@ -1262,7 +1262,7 @@ string Framework::GetCountryName(m2::PointD const & pt) const
bool Framework::Search(search::SearchParams const & params)
{
- auto const mode = params.GetMode();
+ auto const mode = params.m_mode;
auto & intent = m_searchIntents[static_cast<size_t>(mode)];
#ifdef FIXED_LOCATION
@@ -1318,18 +1318,26 @@ bool Framework::QueryMayBeSkipped(SearchIntent const & intent, search::SearchPar
auto const & lastParams = intent.m_params;
auto const & lastViewport = intent.m_viewport;
- if (params.IsForceSearch())
+ if (params.m_forceSearch)
return false;
if (!lastParams.IsEqualCommon(params))
return false;
- if (!lastViewport.IsValid() || !search::IsEqualMercator(lastViewport, viewport, kDistEqualQuery))
+ if (!lastViewport.IsValid() ||
+ !search::IsEqualMercator(lastViewport, viewport, kDistEqualQueryMeters))
+ {
return false;
- if (!lastParams.IsSearchAroundPosition() ||
- ms::DistanceOnEarth(lastParams.m_lat, lastParams.m_lon, params.m_lat, params.m_lon) <=
- kDistEqualQuery)
+ }
+
+ if (lastParams.IsValidPosition() && params.IsValidPosition() &&
+ ms::DistanceOnEarth(lastParams.GetPositionLatLon(), params.GetPositionLatLon()) >
+ kDistEqualQueryMeters)
{
return false;
}
+
+ if (lastParams.IsValidPosition() != params.IsValidPosition())
+ return false;
+
return true;
}
diff --git a/search/engine.cpp b/search/engine.cpp
index 0f8c129a77..7e1e0f473a 100644
--- a/search/engine.cpp
+++ b/search/engine.cpp
@@ -227,7 +227,7 @@ void Engine::PostMessage(TArgs &&... args)
void Engine::DoSearch(SearchParams const & params, m2::RectD const & viewport,
shared_ptr<ProcessorHandle> handle, Processor & processor)
{
- bool const viewportSearch = params.GetMode() == Mode::Viewport;
+ bool const viewportSearch = params.m_mode == Mode::Viewport;
processor.Reset();
processor.Init(viewportSearch);
diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp
index e353017aa7..750f8af6c8 100644
--- a/search/intermediate_result.cpp
+++ b/search/intermediate_result.cpp
@@ -22,9 +22,7 @@
namespace search
{
-
-/// All constants in meters.
-double const DIST_SAME_STREET = 5000.0;
+double const DIST_SAME_STREET_METERS = 5000.0;
char const * const kEmptyRatingSymbol = "-";
char const * const kPricingSymbol = "$";
@@ -277,9 +275,8 @@ bool PreResult2::EqualLinearTypesF::operator() (PreResult2 const & r1, PreResult
{
// Note! Do compare for distance when filtering linear objects.
// Otherwise we will skip the results for different parts of the map.
- return (r1.m_geomType == feature::GEOM_LINE &&
- r1.IsEqualCommon(r2) &&
- PointDistance(r1.GetCenter(), r2.GetCenter()) < DIST_SAME_STREET);
+ return (r1.m_geomType == feature::GEOM_LINE && r1.IsEqualCommon(r2) &&
+ PointDistance(r1.GetCenter(), r2.GetCenter()) < DIST_SAME_STREET_METERS);
}
bool PreResult2::IsEqualCommon(PreResult2 const & r) const
diff --git a/search/processor.cpp b/search/processor.cpp
index 2b8268498c..594323c168 100644
--- a/search/processor.cpp
+++ b/search/processor.cpp
@@ -110,8 +110,9 @@ void SendStatistics(SearchParams const & params, m2::RectD const & viewport, Res
string posX, posY;
if (params.IsValidPosition())
{
- posX = strings::to_string(MercatorBounds::LonToX(params.m_lon));
- posY = strings::to_string(MercatorBounds::LatToY(params.m_lat));
+ m2::PointD const position = params.GetPositionMercator();
+ posX = strings::to_string(position.x);
+ posY = strings::to_string(position.y);
}
alohalytics::TStringMap const stats = {
@@ -380,7 +381,7 @@ void Processor::Search(SearchParams const & params, m2::RectD const & viewport)
bool rankPivotIsSet = false;
if (!viewportSearch && params.IsValidPosition())
{
- m2::PointD const pos = MercatorBounds::FromLatLon(params.m_lat, params.m_lon);
+ m2::PointD const pos = params.GetPositionMercator();
if (m2::Inflate(viewport, viewport.SizeX() / 4.0, viewport.SizeY() / 4.0).IsPointInside(pos))
{
SetRankPivot(pos);
@@ -391,14 +392,14 @@ void Processor::Search(SearchParams const & params, m2::RectD const & viewport)
SetRankPivot(viewport.Center());
if (params.IsValidPosition())
- SetPosition(MercatorBounds::FromLatLon(params.m_lat, params.m_lon));
+ SetPosition(params.GetPositionMercator());
else
SetPosition(viewport.Center());
SetMinDistanceOnMapBetweenResults(params.m_minDistanceOnMapBetweenResults);
- SetMode(params.GetMode());
- SetSuggestsEnabled(params.GetSuggestsEnabled());
+ SetMode(params.m_mode);
+ SetSuggestsEnabled(params.m_suggestsEnabled);
SetInputLocale(params.m_inputLocale);
ASSERT(!params.m_query.empty(), ());
diff --git a/search/search_engine_pylib/api.cpp b/search/search_engine_pylib/api.cpp
index f899c3d831..e87c944b50 100644
--- a/search/search_engine_pylib/api.cpp
+++ b/search/search_engine_pylib/api.cpp
@@ -193,9 +193,9 @@ struct SearchEngineProxy
search::SearchParams sp;
sp.m_query = params.m_query;
sp.m_inputLocale = params.m_locale;
- sp.SetMode(search::Mode::Everywhere);
+ sp.m_mode = search::Mode::Everywhere;
sp.SetPosition(params.m_latLon.m_lat, params.m_latLon.m_lon);
- sp.SetSuggestsEnabled(false);
+ sp.m_suggestsEnabled = false;
auto const & bottomLeft = params.m_viewport.m_min;
auto const & topRight = params.m_viewport.m_max;
diff --git a/search/search_integration_tests/downloader_search_test.cpp b/search/search_integration_tests/downloader_search_test.cpp
index ab819260e3..ac55cea658 100644
--- a/search/search_integration_tests/downloader_search_test.cpp
+++ b/search/search_integration_tests/downloader_search_test.cpp
@@ -129,9 +129,9 @@ private:
search::SearchParams p;
p.m_query = query;
p.m_inputLocale = "en";
- p.SetMode(search::Mode::Downloader);
- p.SetSuggestsEnabled(false);
- p.SetForceSearch(true);
+ p.m_mode = search::Mode::Downloader;
+ p.m_forceSearch = true;
+ p.m_suggestsEnabled = false;
return p;
}
diff --git a/search/search_integration_tests/processor_test.cpp b/search/search_integration_tests/processor_test.cpp
index 16cef90ad7..03db7f3df8 100644
--- a/search/search_integration_tests/processor_test.cpp
+++ b/search/search_integration_tests/processor_test.cpp
@@ -36,8 +36,8 @@ public:
SearchParams params;
params.m_query = query;
params.m_inputLocale = "en";
- params.SetMode(Mode::Everywhere);
- params.SetSuggestsEnabled(false);
+ params.m_mode = Mode::Everywhere;
+ params.m_suggestsEnabled = false;
auto request = make_unique<TestSearchRequest>(m_engine, params, m_viewport);
request->Run();
@@ -290,8 +290,8 @@ UNIT_CLASS_TEST(ProcessorTest, DisableSuggests)
SearchParams params;
params.m_query = "londo";
params.m_inputLocale = "en";
- params.SetMode(Mode::Downloader);
- params.SetSuggestsEnabled(false);
+ params.m_mode = Mode::Downloader;
+ params.m_suggestsEnabled = false;
TestSearchRequest request(m_engine, params, m_viewport);
request.Run();
diff --git a/search/search_params.cpp b/search/search_params.cpp
index fe9da94d89..855b2e514b 100644
--- a/search/search_params.cpp
+++ b/search/search_params.cpp
@@ -4,20 +4,10 @@
#include "coding/multilang_utf8_string.hpp"
+#include "base/assert.hpp"
+
namespace search
{
-SearchParams::SearchParams()
- : m_lat(0.0)
- , m_lon(0.0)
- , m_minDistanceOnMapBetweenResults(0.0)
- , m_searchRadiusM(-1.0)
- , m_mode(Mode::Everywhere)
- , m_forceSearch(false)
- , m_validPos(false)
- , m_suggestsEnabled(true)
-{
-}
-
void SearchParams::SetPosition(double lat, double lon)
{
m_lat = lat;
@@ -25,21 +15,22 @@ void SearchParams::SetPosition(double lat, double lon)
m_validPos = true;
}
-bool SearchParams::GetSearchRect(m2::RectD & rect) const
+m2::PointD SearchParams::GetPositionMercator() const
+{
+ ASSERT(IsValidPosition(), ());
+ return MercatorBounds::FromLatLon(m_lat, m_lon);
+}
+
+ms::LatLon SearchParams::GetPositionLatLon() const
{
- if (IsSearchAroundPosition())
- {
- rect = MercatorBounds::MetresToXY(m_lon, m_lat, m_searchRadiusM);
- return true;
- }
- return false;
+ ASSERT(IsValidPosition(), ());
+ return ms::LatLon(m_lat, m_lon);
}
bool SearchParams::IsEqualCommon(SearchParams const & rhs) const
{
- return (m_query == rhs.m_query && m_inputLocale == rhs.m_inputLocale &&
- m_validPos == rhs.m_validPos && m_mode == rhs.m_mode &&
- m_searchRadiusM == rhs.m_searchRadiusM);
+ return m_query == rhs.m_query && m_inputLocale == rhs.m_inputLocale &&
+ m_validPos == rhs.m_validPos && m_mode == rhs.m_mode;
}
string DebugPrint(SearchParams const & params)
diff --git a/search/search_params.hpp b/search/search_params.hpp
index 7685d3cbdd..e454d017de 100644
--- a/search/search_params.hpp
+++ b/search/search_params.hpp
@@ -2,6 +2,7 @@
#include "search/mode.hpp"
+#include "geometry/latlon.hpp"
#include "geometry/point2d.hpp"
#include "geometry/rect2d.hpp"
@@ -18,48 +19,34 @@ public:
using TOnStarted = function<void()>;
using TOnResults = function<void(Results const &)>;
- SearchParams();
-
- /// @name Force run search without comparing with previous search params.
- //@{
- void SetForceSearch(bool b) { m_forceSearch = b; }
- bool IsForceSearch() const { return m_forceSearch; }
- //@}
-
- inline void SetMode(Mode mode) { m_mode = mode; }
- inline Mode GetMode() const { return m_mode; }
void SetPosition(double lat, double lon);
- inline bool IsValidPosition() const { return m_validPos; }
- inline bool IsSearchAroundPosition() const { return (m_searchRadiusM > 0 && IsValidPosition()); }
- inline void SetSearchRadiusMeters(double radiusM) { m_searchRadiusM = radiusM; }
- bool GetSearchRect(m2::RectD & rect) const;
+ m2::PointD GetPositionMercator() const;
+ ms::LatLon GetPositionLatLon() const;
- /// @param[in] locale can be "fr", "en-US", "ru_RU" etc.
- inline void SetInputLocale(string const & locale) { m_inputLocale = locale; }
- inline void SetSuggestsEnabled(bool enabled) { m_suggestsEnabled = enabled; }
- inline bool GetSuggestsEnabled() const { return m_suggestsEnabled; }
+ inline bool IsValidPosition() const { return m_validPos; }
bool IsEqualCommon(SearchParams const & rhs) const;
-
inline void Clear() { m_query.clear(); }
+
TOnStarted m_onStarted;
TOnResults m_onResults;
string m_query;
string m_inputLocale;
- double m_lat, m_lon;
-
// A minimum distance between search results in meters, needed for
// pre-ranking of viewport search results.
- double m_minDistanceOnMapBetweenResults;
+ double m_minDistanceOnMapBetweenResults = 0.0;
+
+ Mode m_mode = Mode::Everywhere;
+ bool m_forceSearch = false;
+ bool m_suggestsEnabled = true;
friend string DebugPrint(SearchParams const & params);
private:
- double m_searchRadiusM;
- Mode m_mode;
- bool m_forceSearch;
- bool m_validPos;
- bool m_suggestsEnabled;
+ double m_lat = 0.0;
+ double m_lon = 0.0;
+
+ bool m_validPos = false;
};
} // namespace search
diff --git a/search/search_quality/features_collector_tool/features_collector_tool.cpp b/search/search_quality/features_collector_tool/features_collector_tool.cpp
index 39799a7000..2b7b295656 100644
--- a/search/search_quality/features_collector_tool/features_collector_tool.cpp
+++ b/search/search_quality/features_collector_tool/features_collector_tool.cpp
@@ -250,9 +250,9 @@ int main(int argc, char * argv[])
search::SearchParams params;
params.m_query = strings::ToUtf8(sample.m_query);
params.m_inputLocale = sample.m_locale;
- params.SetMode(Mode::Everywhere);
+ params.m_mode = Mode::Everywhere;
params.SetPosition(latLon.lat, latLon.lon);
- params.SetSuggestsEnabled(false);
+ params.m_suggestsEnabled = false;
TestSearchRequest request(engine, params, sample.m_viewport);
request.Run();
diff --git a/search/search_tests_support/test_search_request.cpp b/search/search_tests_support/test_search_request.cpp
index be2cb101b1..27a7192a7b 100644
--- a/search/search_tests_support/test_search_request.cpp
+++ b/search/search_tests_support/test_search_request.cpp
@@ -17,7 +17,7 @@ TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & q
{
m_params.m_query = query;
m_params.m_inputLocale = locale;
- m_params.SetMode(mode);
+ m_params.m_mode = mode;
SetUpCallbacks();
}
@@ -36,7 +36,7 @@ TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & q
{
m_params.m_query = query;
m_params.m_inputLocale = locale;
- m_params.SetMode(mode);
+ m_params.m_mode = mode;
m_params.m_onStarted = move(onStarted);
m_params.m_onResults = move(onResults);
}