diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Metadata.java b/android/src/com/mapswithme/maps/bookmarks/data/Metadata.java index 2cc95a74aa..d69937a102 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/Metadata.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/Metadata.java @@ -53,7 +53,9 @@ public class Metadata implements Parcelable FMD_CONTACT_INSTAGRAM(33), FMD_CONTACT_TWITTER(34), FMD_CONTACT_VK(35), - FMD_CONTACT_LINE(36); + FMD_CONTACT_LINE(36), + FMD_DESTINATION(37), + FMD_DESTINATION_REF(38); private final int mMetaType; MetadataType(int metadataType) diff --git a/generator/osm2meta.cpp b/generator/osm2meta.cpp index c5a32f4550..c2f9e93d88 100644 --- a/generator/osm2meta.cpp +++ b/generator/osm2meta.cpp @@ -146,6 +146,16 @@ string MetadataTagProcessorImpl::ValidateAndFormat_ele(string const & v) const return measurement_utils::OSMDistanceToMetersString(v); } +string MetadataTagProcessorImpl::ValidateAndFormat_destination(string const & v) const +{ + return v; +} + +string MetadataTagProcessorImpl::ValidateAndFormat_destination_ref(string const & v) const +{ + return v; +} + string MetadataTagProcessorImpl::ValidateAndFormat_turn_lanes(string const & v) const { return v; @@ -446,6 +456,8 @@ void MetadataTagProcessor::operator()(std::string const & k, std::string const & case Metadata::FMD_CONTACT_LINE: valid = osm::ValidateAndFormat_contactLine(v); break; case Metadata::FMD_INTERNET: valid = ValidateAndFormat_internet(v); break; case Metadata::FMD_ELE: valid = ValidateAndFormat_ele(v); break; + case Metadata::FMD_DESTINATION: valid = ValidateAndFormat_destination(v); break; + case Metadata::FMD_DESTINATION_REF: valid = ValidateAndFormat_destination_ref(v); break; case Metadata::FMD_TURN_LANES: valid = ValidateAndFormat_turn_lanes(v); break; case Metadata::FMD_TURN_LANES_FORWARD: valid = ValidateAndFormat_turn_lanes_forward(v); break; case Metadata::FMD_TURN_LANES_BACKWARD: valid = ValidateAndFormat_turn_lanes_backward(v); break; diff --git a/generator/osm2meta.hpp b/generator/osm2meta.hpp index 9dbdedfbc8..9a5a628f8f 100644 --- a/generator/osm2meta.hpp +++ b/generator/osm2meta.hpp @@ -16,6 +16,8 @@ struct MetadataTagProcessorImpl std::string ValidateAndFormat_phone(std::string const & v) const; std::string ValidateAndFormat_opening_hours(std::string const & v) const; std::string ValidateAndFormat_ele(std::string const & v) const; + std::string ValidateAndFormat_destination(std::string const & v) const; + std::string ValidateAndFormat_destination_ref(std::string const & v) const; std::string ValidateAndFormat_turn_lanes(std::string const & v) const; std::string ValidateAndFormat_turn_lanes_forward(std::string const & v) const; std::string ValidateAndFormat_turn_lanes_backward(std::string const & v) const; diff --git a/indexer/feature_meta.cpp b/indexer/feature_meta.cpp index 4c3eb0aaf0..df89d0b47e 100644 --- a/indexer/feature_meta.cpp +++ b/indexer/feature_meta.cpp @@ -72,6 +72,10 @@ bool Metadata::TypeFromString(string const & k, Metadata::EType & outType) outType = Metadata::FMD_INTERNET; else if (k == "ele") outType = Metadata::FMD_ELE; + else if (k == "destination") + outType = Metadata::FMD_DESTINATION; + else if (k == "destination:ref") + outType = Metadata::FMD_DESTINATION_REF; else if (k == "turn:lanes") outType = Metadata::FMD_TURN_LANES; else if (k == "turn:lanes:forward") @@ -169,6 +173,8 @@ string ToString(Metadata::EType type) case Metadata::FMD_CONTACT_LINE: return "contact:line"; case Metadata::FMD_INTERNET: return "internet_access"; case Metadata::FMD_ELE: return "ele"; + case Metadata::FMD_DESTINATION: return "desination"; + case Metadata::FMD_DESTINATION_REF: return "desination:ref"; case Metadata::FMD_TURN_LANES: return "turn:lanes"; case Metadata::FMD_TURN_LANES_FORWARD: return "turn:lanes:forward"; case Metadata::FMD_TURN_LANES_BACKWARD: return "turn:lanes:backward"; diff --git a/indexer/feature_meta.hpp b/indexer/feature_meta.hpp index e26be2b821..a93dd1b86b 100644 --- a/indexer/feature_meta.hpp +++ b/indexer/feature_meta.hpp @@ -153,6 +153,8 @@ public: FMD_CONTACT_TWITTER = 34, FMD_CONTACT_VK = 35, FMD_CONTACT_LINE = 36, + FMD_DESTINATION = 37, + FMD_DESTINATION_REF = 38, FMD_COUNT }; diff --git a/indexer/map_object.hpp b/indexer/map_object.hpp index 0fa792ac99..2c58e362d0 100644 --- a/indexer/map_object.hpp +++ b/indexer/map_object.hpp @@ -179,6 +179,8 @@ std::vector MetadataToProps(std::vector const & metadata) case Metadata::FMD_BUILDING_LEVELS: res.push_back(Props::BuildingLevels); break; case Metadata::FMD_LEVEL: res.push_back(Props::Level); break; + case Metadata::FMD_DESTINATION: + case Metadata::FMD_DESTINATION_REF: case Metadata::FMD_TURN_LANES: case Metadata::FMD_TURN_LANES_FORWARD: case Metadata::FMD_TURN_LANES_BACKWARD: diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index ea5b7a2aa6..7366620a13 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -472,14 +472,16 @@ void DrawWidget::SubmitFakeLocationPoint(m2::PointD const & pt) if (m_framework.GetRoutingManager().GetCurrentRouterType() == routing::RouterType::Pedestrian) { LOG(LDEBUG, ("Distance:", loc.m_distToTarget, loc.m_targetUnitsSuffix, "Time:", loc.m_time, - "Pedestrian turn:", DebugPrint(loc.m_pedestrianTurn), - "Distance to turn:", loc.m_distToTurn, loc.m_turnUnitsSuffix)); + DebugPrint(loc.m_pedestrianTurn), + "in", loc.m_distToTurn, loc.m_turnUnitsSuffix, + "to", loc.m_targetName)); } else { LOG(LDEBUG, ("Distance:", loc.m_distToTarget, loc.m_targetUnitsSuffix, "Time:", loc.m_time, - "Turn:", routing::turns::GetTurnString(loc.m_turn), "(", loc.m_distToTurn, - loc.m_turnUnitsSuffix, ") Roundabout exit number:", loc.m_exitNum)); + GetTurnString(loc.m_turn), (loc.m_exitNum != 0 ? ":" + std::to_string(loc.m_exitNum) : ""), + "in", loc.m_distToTurn, loc.m_turnUnitsSuffix, + "to", loc.m_targetName)); } } } diff --git a/routing/directions_engine.cpp b/routing/directions_engine.cpp index 31d29a33e8..7671ad10b9 100644 --- a/routing/directions_engine.cpp +++ b/routing/directions_engine.cpp @@ -66,7 +66,18 @@ void DirectionsEngine::LoadPathAttributes(FeatureID const & featureId, pathSegment.m_onRoundabout = ftypes::IsRoundAboutChecker::Instance()(*ft); pathSegment.m_isOneWay = ftypes::IsOneWayChecker::Instance()(*ft); - pathSegment.m_name = ft->GetName(StringUtf8Multilang::kDefaultCode); + if (pathSegment.m_isLink) + { + if (auto const & dst_number = ft->GetMetadata(feature::Metadata::FMD_DESTINATION_REF); !dst_number.empty()) + pathSegment.m_name = "[" + string(dst_number) + "] "; + pathSegment.m_name += ft->GetMetadata(feature::Metadata::FMD_DESTINATION); + } + else + { + if (auto const & road_number = ft->GetRoadNumber(); !road_number.empty()) + pathSegment.m_name = "[" + road_number + "] "; + pathSegment.m_name += ft->GetName(StringUtf8Multilang::kDefaultCode); + } } void DirectionsEngine::GetSegmentRangeAndAdjacentEdges(IRoadGraph::EdgeListT const & outgoingEdges,