From 09aa67223e67ab2c21ec55ff736dbb78d4f32afd Mon Sep 17 00:00:00 2001 From: Yannik Bloscheck Date: Tue, 30 Dec 2025 17:32:04 +0100 Subject: [PATCH] [styles] Keep using shorter type for simple charging stations Signed-off-by: Yannik Bloscheck --- .../src/main/res/values-de/types_strings.xml | 2 +- .../sdk/src/main/res/values/types_strings.xml | 2 +- data/categories-strings/en.json/localize.json | 2 +- data/mapcss-mapping.csv | 2 +- .../include/priorities_1_BG-by-size.prio.txt | 2 +- .../include/priorities_4_overlays.prio.txt | 4 +-- .../include/priorities_1_BG-by-size.prio.txt | 2 +- .../include/priorities_4_overlays.prio.txt | 4 +-- .../include/priorities_1_BG-by-size.prio.txt | 2 +- .../include/priorities_4_overlays.prio.txt | 4 +-- generator/osm2type.cpp | 10 +++++++- .../de.lproj/LocalizableTypes.strings | 2 +- .../en-GB.lproj/LocalizableTypes.strings | 2 +- .../en.lproj/LocalizableTypes.strings | 2 +- libs/indexer/feature_data.cpp | 25 +++++++++++-------- libs/indexer/ftypes_matcher.cpp | 4 +-- libs/map/bookmark_helpers.cpp | 1 - libs/map/search_mark.cpp | 1 - 18 files changed, 42 insertions(+), 31 deletions(-) diff --git a/android/sdk/src/main/res/values-de/types_strings.xml b/android/sdk/src/main/res/values-de/types_strings.xml index 6dcec1495..15dbafe30 100644 --- a/android/sdk/src/main/res/values-de/types_strings.xml +++ b/android/sdk/src/main/res/values-de/types_strings.xml @@ -42,7 +42,7 @@ Glücksspiel Spielhalle für Erwachsene Spielhalle für Unterhaltungsspiele - Ladestation + Ladestation Fahrräder Motorräder Autos diff --git a/android/sdk/src/main/res/values/types_strings.xml b/android/sdk/src/main/res/values/types_strings.xml index ab7bc16a7..1e6e979d5 100644 --- a/android/sdk/src/main/res/values/types_strings.xml +++ b/android/sdk/src/main/res/values/types_strings.xml @@ -52,7 +52,7 @@ Gambling Adult Gaming Centre Arcade - Charging Station + Charging Station Bicycles Motorcycles Cars diff --git a/data/categories-strings/en.json/localize.json b/data/categories-strings/en.json/localize.json index 211492950..d259bfff0 100644 --- a/data/categories-strings/en.json/localize.json +++ b/data/categories-strings/en.json/localize.json @@ -354,7 +354,7 @@ "amenity-veterinary": "4Veterinary Doctor|3Veterinary|vet|veterinarian", "amenity-animal_shelter": "6Animal Shelter", "@charging_station": "4Charging Station|charging|charger", -"amenity-charging_station-general|@charging_station": "", +"amenity-charging_station|@charging_station": "", "amenity-charging_station-bicycle|@charging_station": "4Bicycle Charging Station|Bicycle Charging|Bike Charging", "amenity-charging_station-motorcycle|@charging_station": "5Motorcycle Charging Station|Motorcycle Charging|Motorbike Charging", "amenity-charging_station-motorcar|@charging_station": "3Car Charging Station|Motorcar Charging|Car Charging", diff --git a/data/mapcss-mapping.csv b/data/mapcss-mapping.csv index 116725d9c..f0259e82d 100644 --- a/data/mapcss-mapping.csv +++ b/data/mapcss-mapping.csv @@ -1193,7 +1193,7 @@ shop|tyres;1064; craft|beekeeper;1065; amenity|car_wash;1066; amenity|veterinary;1067; -amenity|charging_station|general;[amenity=charging_station];;name;int_name;1068; +amenity|charging_station;[amenity=charging_station];;name;int_name;1068; amenity|childcare;1069; craft|blacksmith;1070; amenity|bicycle_parking;1071; diff --git a/data/styles/default/include/priorities_1_BG-by-size.prio.txt b/data/styles/default/include/priorities_1_BG-by-size.prio.txt index 621e52624..df516c731 100644 --- a/data/styles/default/include/priorities_1_BG-by-size.prio.txt +++ b/data/styles/default/include/priorities_1_BG-by-size.prio.txt @@ -85,9 +85,9 @@ landuse-cemetery-christian # area z10- (also has icon z === 180 amenity-car_wash # area z15- (also has icon z17-, caption(optional) z17-) +amenity-charging_station # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-) -amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-) amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-) diff --git a/data/styles/default/include/priorities_4_overlays.prio.txt b/data/styles/default/include/priorities_4_overlays.prio.txt index 7ac47758b..63701dc28 100644 --- a/data/styles/default/include/priorities_4_overlays.prio.txt +++ b/data/styles/default/include/priorities_4_overlays.prio.txt @@ -435,7 +435,7 @@ amenity-charging_station-motorcycle # icon z16- (also has captio amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-) === 3751 -amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-) +amenity-charging_station # icon z16- (also has caption(optional) z16-, area z16-) === 3750 amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-) @@ -1712,7 +1712,7 @@ leisure-swimming_pool-private # icon z17- (also has captio # amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-) # === -6249 -# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-) +# amenity-charging_station # caption(optional) z16- (also has icon z16-, area z16-) # === -6250 # amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-) diff --git a/data/styles/outdoors/include/priorities_1_BG-by-size.prio.txt b/data/styles/outdoors/include/priorities_1_BG-by-size.prio.txt index a3931322f..3d8fbd877 100644 --- a/data/styles/outdoors/include/priorities_1_BG-by-size.prio.txt +++ b/data/styles/outdoors/include/priorities_1_BG-by-size.prio.txt @@ -86,9 +86,9 @@ landuse-cemetery-christian # area z10- (also has icon z === 180 amenity-car_wash # area z15- (also has icon z17-, caption(optional) z17-) +amenity-charging_station # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-) -amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-) amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-) diff --git a/data/styles/outdoors/include/priorities_4_overlays.prio.txt b/data/styles/outdoors/include/priorities_4_overlays.prio.txt index 864362a1a..e0d7aa002 100644 --- a/data/styles/outdoors/include/priorities_4_overlays.prio.txt +++ b/data/styles/outdoors/include/priorities_4_overlays.prio.txt @@ -435,7 +435,7 @@ amenity-charging_station-motorcycle # icon z16- (also has captio amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-) === 3751 -amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-) +amenity-charging_station # icon z16- (also has caption(optional) z16-, area z16-) === 3750 amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-) @@ -1715,7 +1715,7 @@ leisure-swimming_pool-private # icon z17- (also has captio # amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-) # === -6249 -# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-) +# amenity-charging_station # caption(optional) z16- (also has icon z16-, area z16-) # === -6250 # amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-) diff --git a/data/styles/vehicle/include/priorities_1_BG-by-size.prio.txt b/data/styles/vehicle/include/priorities_1_BG-by-size.prio.txt index 453b69512..c0d1e920f 100644 --- a/data/styles/vehicle/include/priorities_1_BG-by-size.prio.txt +++ b/data/styles/vehicle/include/priorities_1_BG-by-size.prio.txt @@ -33,9 +33,9 @@ amenity-parking-street_side-private # area z15- (also has icon z === 160 amenity-car_wash # area z17- (also has icon z17-, caption(optional) z17-) +amenity-charging_station # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-bicycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-carless # area z16- (also has icon z16-, caption(optional) z16-) -amenity-charging_station-general # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-motorcar # area z15- (also has icon z14-, caption(optional) z14-) amenity-charging_station-motorcycle # area z16- (also has icon z16-, caption(optional) z16-) amenity-charging_station-small # area z15- (also has icon z15-, caption(optional) z16-) diff --git a/data/styles/vehicle/include/priorities_4_overlays.prio.txt b/data/styles/vehicle/include/priorities_4_overlays.prio.txt index b07f6961b..ae261e6c8 100644 --- a/data/styles/vehicle/include/priorities_4_overlays.prio.txt +++ b/data/styles/vehicle/include/priorities_4_overlays.prio.txt @@ -186,7 +186,7 @@ amenity-charging_station-motorcycle # icon z16- (also has captio amenity-charging_station-bicycle # icon z16- (also has caption(optional) z16-, area z16-) === 3151 -amenity-charging_station-general # icon z16- (also has caption(optional) z16-, area z16-) +amenity-charging_station # icon z16- (also has caption(optional) z16-, area z16-) === 3150 amenity-charging_station-carless # icon z16- (also has caption(optional) z16-, area z16-) @@ -809,7 +809,7 @@ entrance-emergency # icon z19- (also has captio # amenity-charging_station-bicycle # caption(optional) z16- (also has icon z16-, area z16-) # === -6849 -# amenity-charging_station-general # caption(optional) z16- (also has icon z16-, area z16-) +# amenity-charging_station # caption(optional) z16- (also has icon z16-, area z16-) # === -6850 # amenity-charging_station-carless # caption(optional) z16- (also has icon z16-, area z16-) diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index e8052814f..182059ff7 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -351,6 +351,11 @@ private: // - both amenity-charging_station-motorcar and amenity-charging_station-bicycle are left; void LeaveLongestTypes(std::vector & matchedTypes) { + auto const isChargingStation = [](auto const & lhs, auto const & rhs) + { + return lhs.size() > 1 && rhs.size() > 1 && lhs.at(1) == "charging_station" && rhs.at(1) == "charging_station" && lhs.at(0) == "amenity" && rhs.at(0) == "amenity"; + }; + auto const equalPrefix = [](auto const & lhs, auto const & rhs) { size_t const prefixSz = std::min(lhs.size(), rhs.size()); @@ -369,8 +374,11 @@ void LeaveLongestTypes(std::vector & matchedTypes) return lhs < rhs; }; - auto const isEqual = [&equalPrefix](auto const & lhs, auto const & rhs) + auto const isEqual = [&equalPrefix, &isChargingStation](auto const & lhs, auto const & rhs) { + if (isChargingStation(lhs, rhs)) + return false; + if (equalPrefix(lhs, rhs)) { // Keep longest type only, so return equal is true. diff --git a/iphone/Maps/LocalizedStrings/de.lproj/LocalizableTypes.strings b/iphone/Maps/LocalizedStrings/de.lproj/LocalizableTypes.strings index 4bf0cbe71..a0e001c7b 100644 --- a/iphone/Maps/LocalizedStrings/de.lproj/LocalizableTypes.strings +++ b/iphone/Maps/LocalizedStrings/de.lproj/LocalizableTypes.strings @@ -42,7 +42,7 @@ "type.amenity.gambling" = "Glücksspiel"; "type.leisure.adult_gaming_centre" = "Spielhalle für Erwachsene"; "type.leisure.amusement_arcade" = "Spielhalle für Unterhaltungsspiele"; -"type.amenity.charging_station.general" = "Ladestation"; +"type.amenity.charging_station" = "Ladestation"; "type.amenity.charging_station.motorcar" = "Autos"; "type.amenity.charging_station.motorcycle" = "Motorräder"; "type.amenity.charging_station.bicycle" = "Fahrräder"; diff --git a/iphone/Maps/LocalizedStrings/en-GB.lproj/LocalizableTypes.strings b/iphone/Maps/LocalizedStrings/en-GB.lproj/LocalizableTypes.strings index 6974805d6..3199df778 100644 --- a/iphone/Maps/LocalizedStrings/en-GB.lproj/LocalizableTypes.strings +++ b/iphone/Maps/LocalizedStrings/en-GB.lproj/LocalizableTypes.strings @@ -47,7 +47,7 @@ "type.amenity.gambling" = "Gambling"; "type.leisure.adult_gaming_centre" = "Adult Gaming Centre"; "type.leisure.amusement_arcade" = "Arcade"; -"type.amenity.charging_station.general" = "Charging Station"; +"type.amenity.charging_station" = "Charging Station"; "type.amenity.charging_station.motorcar" = "Cars"; "type.amenity.charging_station.motorcycle" = "Motorcycles"; "type.amenity.charging_station.bicycle" = "Bicycles"; diff --git a/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings b/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings index 6fb4387ee..a483f584f 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings @@ -54,7 +54,7 @@ "type.amenity.studio" = "Media Studio"; "type.leisure.adult_gaming_centre" = "Adult Gaming Centre"; "type.leisure.amusement_arcade" = "Arcade"; -"type.amenity.charging_station.general" = "Charging Station"; +"type.amenity.charging_station" = "Charging Station"; "type.amenity.charging_station.motorcar" = "Cars"; "type.amenity.charging_station.motorcycle" = "Motorcycles"; "type.amenity.charging_station.bicycle" = "Bicycles"; diff --git a/libs/indexer/feature_data.cpp b/libs/indexer/feature_data.cpp index 74f75935e..8d22bf1cc 100644 --- a/libs/indexer/feature_data.cpp +++ b/libs/indexer/feature_data.cpp @@ -196,15 +196,20 @@ void TypesHolder::SortBySpec() std::stable_sort(begin(), end(), [&checker, &getPriority, &isChargingStationChecker, &isChargingStationSmallChecker](uint32_t t1, uint32_t t2) { - if (isChargingStationSmallChecker(t1) && !isChargingStationSmallChecker(t2)) - return false; - else if (isChargingStationSmallChecker(t1) && !isChargingStationSmallChecker(t2)) - return true; - - if (isChargingStationChecker(t1) && !isChargingStationChecker(t2)) - return true; - else if (isChargingStationChecker(t2) && !isChargingStationChecker(t1)) - return false; + if (isChargingStationChecker(t1) && isChargingStationChecker(t2)) + { + if (isChargingStationSmallChecker(t1) && !isChargingStationSmallChecker(t2)) + return false; + else if (!isChargingStationSmallChecker(t1) && isChargingStationSmallChecker(t2)) + return true; + + uint8_t const t1Level = ftype::GetLevel(t1); + uint8_t const t2Level = ftype::GetLevel(t2); + if (t1Level == 2 && t2Level != 2) + return true; + else if (t1Level != 2 && t2Level == 2) + return false; + } int const p1 = getPriority(t1); int const p2 = getPriority(t2); @@ -416,7 +421,7 @@ void FeatureParams::SetRwSubwayType(char const * cityName) FeatureParams::TypesResult FeatureParams::FinishAddingTypesEx() { auto const & cl = classif(); - auto charingStation = cl.GetTypeByPath({"amenity", "charging_station", "general"}); + auto charingStation = cl.GetTypeByPath({"amenity", "charging_station"}); auto motorcarCharingStation = cl.GetTypeByPath({"amenity", "charging_station", "motorcar"}); auto carelessCharingStation = cl.GetTypeByPath({"amenity", "charging_station", "carless"}); if (IsTypeExist(charingStation) && !IsTypeExist(motorcarCharingStation) && !IsTypeExist(carelessCharingStation)) diff --git a/libs/indexer/ftypes_matcher.cpp b/libs/indexer/ftypes_matcher.cpp index c50b957bb..bec8dfc88 100644 --- a/libs/indexer/ftypes_matcher.cpp +++ b/libs/indexer/ftypes_matcher.cpp @@ -753,10 +753,10 @@ IsDirectionalChecker::IsDirectionalChecker() : ftypes::BaseChecker(1 /* level */ m_types.push_back(c.GetTypeByPath({"lateral"})); } -IsCharingStationChecker::IsCharingStationChecker() : ftypes::BaseChecker(3 /* level */) +IsCharingStationChecker::IsCharingStationChecker() : ftypes::BaseChecker(2 /* level */) { Classificator const & c = classif(); - m_types.push_back(c.GetTypeByPath({"amenity", "charging_station", "general"})); + m_types.push_back(c.GetTypeByPath({"amenity", "charging_station"})); } IsCharingStationCarChecker::IsCharingStationCarChecker() : ftypes::BaseChecker(3 /* level */) diff --git a/libs/map/bookmark_helpers.cpp b/libs/map/bookmark_helpers.cpp index 37a2c5460..626a00635 100644 --- a/libs/map/bookmark_helpers.cpp +++ b/libs/map/bookmark_helpers.cpp @@ -86,7 +86,6 @@ std::map const kFeatureTypeToBookmarkMatchInfo = {"amenity-bureau_de_change", {kml::BookmarkIcon::Exchange, BookmarkBaseType::Exchange}}, {"amenity-charging_station", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}}, - {"amenity-charging_station-general", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}}, {"amenity-charging_station-bicycle", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}}, {"amenity-charging_station-motorcycle", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}}, {"amenity-charging_station-motorcar", {kml::BookmarkIcon::ChargingStation, BookmarkBaseType::Gas}}, diff --git a/libs/map/search_mark.cpp b/libs/map/search_mark.cpp index 19f3c323f..9644e5ca7 100644 --- a/libs/map/search_mark.cpp +++ b/libs/map/search_mark.cpp @@ -228,7 +228,6 @@ private: {{"shop", "money_lender"}, SearchMarkType::Bank}, {{"amenity", "fuel"}, SearchMarkType::Fuel}, {{"amenity", "charging_station"}, SearchMarkType::ChargingStation}, - {{"amenity", "charging_station", "general"}, SearchMarkType::ChargingStation}, {{"amenity", "charging_station", "bicycle"}, SearchMarkType::ChargingStation}, {{"amenity", "charging_station", "motorcycle"}, SearchMarkType::ChargingStation}, {{"amenity", "charging_station", "motorcar"}, SearchMarkType::ChargingStation},