diff --git a/data/mapcss-mapping.csv b/data/mapcss-mapping.csv index 33af72c205..7c3e47ad6e 100644 --- a/data/mapcss-mapping.csv +++ b/data/mapcss-mapping.csv @@ -1113,7 +1113,8 @@ sponsored;[sponsored];;name;int_name;1112; sponsored|booking;1113; hwtag|nobicycle;1114; hwtag|yesbicycle;1115; -psurface|paved_good;1116; -psurface|paved_bad;1117; -psurface|unpaved_good;1118; -psurface|unpaved_bad;1119; +hwtag|bicycle_bidir;1116; +psurface|paved_good;1117; +psurface|paved_bad;1118; +psurface|unpaved_good;1119; +psurface|unpaved_bad;1120; diff --git a/generator/generator_tests/osm_type_test.cpp b/generator/generator_tests/osm_type_test.cpp index efef83dc3d..4a156d6730 100644 --- a/generator/generator_tests/osm_type_test.cpp +++ b/generator/generator_tests/osm_type_test.cpp @@ -506,7 +506,8 @@ UNIT_TEST(OsmType_Amenity) UNIT_TEST(OsmType_Hwtag) { char const * tags[][2] = { - {"hwtag", "oneway"}, {"hwtag", "private"}, {"hwtag", "lit"}, {"hwtag", "nofoot"}, {"hwtag", "yesfoot"}, {"hwtag", "yesbicycle"} + {"hwtag", "oneway"}, {"hwtag", "private"}, {"hwtag", "lit"}, {"hwtag", "nofoot"}, {"hwtag", "yesfoot"}, + {"hwtag", "yesbicycle"}, {"hwtag", "bicycle_bidir"} }; { @@ -534,6 +535,7 @@ UNIT_TEST(OsmType_Hwtag) {"lit", "no"}, {"foot", "no"}, {"bicycle", "yes"}, + {"oneway:bicycle", "no"}, }; OsmElement e; @@ -542,12 +544,13 @@ UNIT_TEST(OsmType_Hwtag) FeatureParams params; ftype::GetNameAndType(&e, params); - TEST_EQUAL(params.m_Types.size(), 5, (params)); + TEST_EQUAL(params.m_Types.size(), 6, (params)); TEST(params.IsTypeExist(GetType(arr[1])), ()); TEST(params.IsTypeExist(GetType(tags[0])), ()); TEST(params.IsTypeExist(GetType(tags[1])), ()); TEST(params.IsTypeExist(GetType(tags[3])), ()); TEST(params.IsTypeExist(GetType(tags[5])), ()); + TEST(params.IsTypeExist(GetType(tags[6])), ()); } { diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index c8dfbd4e18..dc1fa670c0 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -214,7 +214,7 @@ namespace ftype public: enum EType { ENTRANCE, HIGHWAY, ADDRESS, ONEWAY, PRIVATE, LIT, NOFOOT, YESFOOT, - NOBICYCLE, YESBICYCLE, SURFPGOOD, SURFPBAD, SURFUGOOD, SURFUBAD, + NOBICYCLE, YESBICYCLE, BICYCLE_BIDIR, SURFPGOOD, SURFPBAD, SURFUGOOD, SURFUBAD, RW_STATION, RW_STATION_SUBWAY }; CachedTypes() @@ -228,7 +228,7 @@ namespace ftype { {"building", "address"}, {"hwtag", "oneway"}, {"hwtag", "private"}, {"hwtag", "lit"}, {"hwtag", "nofoot"}, {"hwtag", "yesfoot"}, - {"hwtag", "nobicycle"}, {"hwtag", "yesbicycle"}, + {"hwtag", "nobicycle"}, {"hwtag", "yesbicycle"}, {"hwtag", "bicycle_bidir"}, {"psurface", "paved_good"}, {"psurface", "paved_bad"}, {"psurface", "unpaved_good"}, {"psurface", "unpaved_bad"}, }; @@ -529,6 +529,8 @@ namespace ftype { "bicycle", "!", [¶ms] { params.AddType(types.Get(CachedTypes::NOBICYCLE)); }}, { "bicycle", "~", [¶ms] { params.AddType(types.Get(CachedTypes::YESBICYCLE)); }}, { "cycleway", "~", [¶ms] { params.AddType(types.Get(CachedTypes::YESBICYCLE)); }}, + { "oneway:bicycle", "!", [¶ms] { params.AddType(types.Get(CachedTypes::BICYCLE_BIDIR)); }}, + { "cycleway", "opposite", [¶ms] { params.AddType(types.Get(CachedTypes::BICYCLE_BIDIR)); }}, }); highwayDone = true;