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
path: root/map
diff options
context:
space:
mode:
authorVlad Mihaylenko <vxmihaylenko@gmail.com>2016-12-08 19:09:19 +0300
committerGitHub <noreply@github.com>2016-12-08 19:09:19 +0300
commit136f12af3adde05623008f71d07bb996fe5801a5 (patch)
tree8ecaa245997ffae2a56a349ab318cba6cdc33000 /map
parent3e5daed4c3b3696765132c2d0b9c2eec3544537d (diff)
parent6cc828ca8f7030f84b47e73ab190899372b25582 (diff)
Merge pull request #4905 from milchakov/uber_place_page_core_dummy
[core] uber into place page
Diffstat (limited to 'map')
-rw-r--r--map/CMakeLists.txt2
-rw-r--r--map/map.pro2
-rw-r--r--map/place_page_info.cpp8
-rw-r--r--map/place_page_info.hpp2
-rw-r--r--map/reachable_by_taxi_checker.cpp106
-rw-r--r--map/reachable_by_taxi_checker.hpp19
6 files changed, 138 insertions, 1 deletions
diff --git a/map/CMakeLists.txt b/map/CMakeLists.txt
index 9a5f168574..3b89894583 100644
--- a/map/CMakeLists.txt
+++ b/map/CMakeLists.txt
@@ -45,6 +45,8 @@ set(
mwm_url.hpp
place_page_info.cpp
place_page_info.hpp
+ reachable_by_taxi_checker.сpp
+ reachable_by_taxi_checker.hpp
track.cpp
track.hpp
traffic_manager.cpp
diff --git a/map/map.pro b/map/map.pro
index abb6f171db..1816bd1e9a 100644
--- a/map/map.pro
+++ b/map/map.pro
@@ -27,6 +27,7 @@ HEADERS += \
gps_tracker.hpp \
mwm_url.hpp \
place_page_info.hpp \
+ reachable_by_taxi_checker.hpp \
track.hpp \
traffic_manager.hpp \
user_mark.hpp \
@@ -51,6 +52,7 @@ SOURCES += \
gps_tracker.cpp \
mwm_url.cpp \
place_page_info.cpp \
+ reachable_by_taxi_checker.cpp \
track.cpp \
traffic_manager.cpp \
user_mark.cpp \
diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp
index 508e35d8f2..1da6b4b493 100644
--- a/map/place_page_info.cpp
+++ b/map/place_page_info.cpp
@@ -1,4 +1,5 @@
-#include "place_page_info.hpp"
+#include "map/place_page_info.hpp"
+#include "map/reachable_by_taxi_checker.hpp"
#include "indexer/feature_utils.hpp"
#include "indexer/osm_editor.hpp"
@@ -195,5 +196,10 @@ string Info::GetBannerUrl() const
return m_banner.GetFormattedUrl(m_metadata.Get(feature::Metadata::FMD_BANNER_URL));
}
+bool Info::IsReachableByTaxi() const
+{
+ return IsReachableByTaxiChecker::Instance()(m_types);
+}
+
void Info::SetMercator(m2::PointD const & mercator) { m_mercator = mercator; }
} // namespace place_page
diff --git a/map/place_page_info.hpp b/map/place_page_info.hpp
index a7ef979169..37e3ca5545 100644
--- a/map/place_page_info.hpp
+++ b/map/place_page_info.hpp
@@ -85,6 +85,8 @@ public:
string GetBannerIconId() const;
string GetBannerUrl() const;
+ bool IsReachableByTaxi() const;
+
void SetMercator(m2::PointD const & mercator);
/// Comes from API, shared links etc.
diff --git a/map/reachable_by_taxi_checker.cpp b/map/reachable_by_taxi_checker.cpp
new file mode 100644
index 0000000000..7efb944c9e
--- /dev/null
+++ b/map/reachable_by_taxi_checker.cpp
@@ -0,0 +1,106 @@
+#include "map/reachable_by_taxi_checker.hpp"
+
+#include "indexer/classificator.hpp"
+
+namespace place_page
+{
+IsReachableByTaxiChecker::IsReachableByTaxiChecker()
+{
+ // Returns true when the following list does not contain provided type.
+ Classificator const & c = classif();
+ char const * const paths[][2] = {
+ {"aerialway", "cable_car"},
+ {"aerialway", "chair_lift"},
+ {"aerialway", "drag_lift"},
+ {"aerialway", "gondola"},
+ {"aerialway", "j-bar"},
+ {"aerialway", "magic_carpet"},
+ {"aerialway", "mixed_lift"},
+ {"aerialway", "platter"},
+ {"aerialway", "rope_tow"},
+ {"aerialway", "t-bar"},
+ {"aeroway", "gate"},
+ {"amenity", "bench"},
+ {"amenity", "fountain"},
+ {"amenity", "grave_yard"},
+ {"amenity", "hunting_stand"},
+ {"amenity", "post_box"},
+ {"amenity", "recycling"},
+ {"amenity", "toilets"},
+ {"amenity", "waste_basket"},
+ {"amenity", "waste_disposal"},
+ {"barrier", "border_control"},
+ {"barrier", "lift_gate"},
+ {"barrier", "toll_booth"},
+ {"emergency", "phone"},
+ {"highway", "bus_stop"},
+ {"highway", "motorway_junction"},
+ {"highway", "speed_camera"},
+ {"historic", "wayside_cross"},
+ {"historic", "wayside_shrine"},
+ {"landuse", "allotments"},
+ {"landuse", "cemetery"},
+ {"landuse", "construction"},
+ {"landuse", "farmland"},
+ {"landuse", "forest"},
+ {"landuse", "industrial"},
+ {"landuse", "landfill"},
+ {"landuse", "military"},
+ {"landuse", "orchard"},
+ {"landuse", "quarry"},
+ {"landuse", "railway"},
+ {"landuse", "recreation_ground"},
+ {"landuse", "vineyard"},
+ {"man_made", "breakwater"},
+ {"man_made", "chimney"},
+ {"man_made", "lighthouse"},
+ {"man_made", "pier"},
+ {"man_made", "survey_point"},
+ {"man_made", "windmill"},
+ {"natural", "bare_rock"},
+ {"natural", "cape"},
+ {"natural", "cave_entrance"},
+ {"natural", "peak"},
+ {"natural", "rock"},
+ {"natural", "spring"},
+ {"natural", "tree"},
+ {"natural", "volcano"},
+ {"natural", "water"},
+ {"natural", "wetland"},
+ {"place", "archipelago"},
+ {"place", "city"},
+ {"place", "continent"},
+ {"place", "country"},
+ {"place", "farm"},
+ {"place", "hamlet"},
+ {"place", "island"},
+ {"place", "isolated_dwelling"},
+ {"place", "locality"},
+ {"place", "neighbourhood"},
+ {"place", "ocean"},
+ {"place", "region"},
+ {"place", "sea"},
+ {"place", "state"},
+ {"place", "suburb"},
+ {"place", "town"},
+ {"place", "village"},
+ {"waterway", "lock_gate"},
+ {"waterway", "wair"},
+ {"waterway", "waterfall"}
+ };
+
+ for (auto const & path : paths)
+ m_types.push_back(c.GetTypeByPath({path[0], path[1]}));
+}
+
+bool IsReachableByTaxiChecker::IsMatched(uint32_t type) const
+{
+ return !BaseChecker::IsMatched(type);
+}
+
+IsReachableByTaxiChecker const & IsReachableByTaxiChecker::Instance()
+{
+ static IsReachableByTaxiChecker const inst;
+ return inst;
+}
+} // namespace place_page
diff --git a/map/reachable_by_taxi_checker.hpp b/map/reachable_by_taxi_checker.hpp
new file mode 100644
index 0000000000..f4a4c681df
--- /dev/null
+++ b/map/reachable_by_taxi_checker.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "indexer/ftypes_matcher.hpp"
+
+#include "base/macros.hpp"
+
+namespace place_page
+{
+class IsReachableByTaxiChecker : public ftypes::BaseChecker
+{
+public:
+ static IsReachableByTaxiChecker const & Instance();
+ bool IsMatched(uint32_t type) const override;
+
+private:
+ IsReachableByTaxiChecker();
+ DISALLOW_COPY_AND_MOVE(IsReachableByTaxiChecker);
+};
+} // namespace place_page