diff options
author | Vlad Mihaylenko <vxmihaylenko@gmail.com> | 2016-12-08 19:09:19 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-08 19:09:19 +0300 |
commit | 136f12af3adde05623008f71d07bb996fe5801a5 (patch) | |
tree | 8ecaa245997ffae2a56a349ab318cba6cdc33000 /map | |
parent | 3e5daed4c3b3696765132c2d0b9c2eec3544537d (diff) | |
parent | 6cc828ca8f7030f84b47e73ab190899372b25582 (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.txt | 2 | ||||
-rw-r--r-- | map/map.pro | 2 | ||||
-rw-r--r-- | map/place_page_info.cpp | 8 | ||||
-rw-r--r-- | map/place_page_info.hpp | 2 | ||||
-rw-r--r-- | map/reachable_by_taxi_checker.cpp | 106 | ||||
-rw-r--r-- | map/reachable_by_taxi_checker.hpp | 19 |
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 |