From 5886d15e88c971c06fb36878896501766e6f45f8 Mon Sep 17 00:00:00 2001 From: map-per Date: Wed, 22 Oct 2025 18:56:36 +0200 Subject: [PATCH] [styles] Add disused business POIs (e.g. disused:shop) Signed-off-by: map-per --- .../sdk/src/main/res/values/types_strings.xml | 1 + data/mapcss-mapping.csv | 2 +- .../dark/symbols/disusedbusiness-m.svg | 4 +++ data/styles/default/include/Icons.mapcss | 5 ++++ .../include/priorities_4_overlays.prio.txt | 1 + .../light/symbols/disusedbusiness-m.svg | 4 +++ .../include/priorities_4_overlays.prio.txt | 1 + generator/osm2type.cpp | 29 +++++++++++++++++++ .../en.lproj/LocalizableTypes.strings | 1 + 9 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 data/styles/default/dark/symbols/disusedbusiness-m.svg create mode 100644 data/styles/default/light/symbols/disusedbusiness-m.svg diff --git a/android/sdk/src/main/res/values/types_strings.xml b/android/sdk/src/main/res/values/types_strings.xml index c3cc2955b..727ffac66 100644 --- a/android/sdk/src/main/res/values/types_strings.xml +++ b/android/sdk/src/main/res/values/types_strings.xml @@ -1286,6 +1286,7 @@ Watch Store Wholesale Store Lighting Shop + Vacant Business Sport Various Sports Bowling diff --git a/data/mapcss-mapping.csv b/data/mapcss-mapping.csv index ed401933e..53d200126 100644 --- a/data/mapcss-mapping.csv +++ b/data/mapcss-mapping.csv @@ -1362,7 +1362,7 @@ historic|memorial|plaque;[historic=memorial][memorial=plaque],[historic=memorial historic|castle|defensive;[historic=castle][castle_type=defensive];;name;int_name;1234; historic|castle|stately;[historic=castle][castle_type=stately];;name;int_name;1235; attraction|animal;1236; -deprecated:tourism|attraction|specified:03.2024;[tourism=attraction][attraction=specified];x;name;int_name;1237;tourism|attraction +disusedbusiness;[disused:shop?],[disused:amenity=restaurant],[disused:amenity=fast_food],[disused:amenity=cafe],[disused:amenity=pub],[disused:amenity=bar];;;;1237; cuisine|regional;1238; cuisine|pizza;1239; cuisine|burger;1240; diff --git a/data/styles/default/dark/symbols/disusedbusiness-m.svg b/data/styles/default/dark/symbols/disusedbusiness-m.svg new file mode 100644 index 000000000..ce286b97d --- /dev/null +++ b/data/styles/default/dark/symbols/disusedbusiness-m.svg @@ -0,0 +1,4 @@ + + disusedbusiness-m + + diff --git a/data/styles/default/include/Icons.mapcss b/data/styles/default/include/Icons.mapcss index ce434bda6..47700134d 100644 --- a/data/styles/default/include/Icons.mapcss +++ b/data/styles/default/include/Icons.mapcss @@ -51,6 +51,11 @@ node|z16-[shop], node|z18-[shop], {icon-image: shop-m.svg;} +node|z20-[disused:shop], +{icon-min-distance: 10;} +node|z20-[disused:shop], +{icon-image: disusedbusiness-m.svg;} + /* 2. NATURAL */ node|z13-[natural=volcano], diff --git a/data/styles/default/include/priorities_4_overlays.prio.txt b/data/styles/default/include/priorities_4_overlays.prio.txt index 741a6e82d..d1768f904 100644 --- a/data/styles/default/include/priorities_4_overlays.prio.txt +++ b/data/styles/default/include/priorities_4_overlays.prio.txt @@ -1263,6 +1263,7 @@ amenity-motorcycle_parking # icon z17- (also has captio amenity-parking-permissive # icon z16- (also has caption(optional) z18-, area z15-) amenity-parking_entrance # icon z17- (also has caption(optional) z19-) amenity-parking_entrance-permissive # icon z17- (also has caption(optional) z19-) +disusedbusiness # icon z20- emergency-emergency_ward_entrance # icon z16- (also has caption(optional) z18-) === 250 diff --git a/data/styles/default/light/symbols/disusedbusiness-m.svg b/data/styles/default/light/symbols/disusedbusiness-m.svg new file mode 100644 index 000000000..4ab3e2149 --- /dev/null +++ b/data/styles/default/light/symbols/disusedbusiness-m.svg @@ -0,0 +1,4 @@ + + disusedbusiness-m + + diff --git a/data/styles/outdoors/include/priorities_4_overlays.prio.txt b/data/styles/outdoors/include/priorities_4_overlays.prio.txt index bc32c6fff..19aab7cb6 100644 --- a/data/styles/outdoors/include/priorities_4_overlays.prio.txt +++ b/data/styles/outdoors/include/priorities_4_overlays.prio.txt @@ -1264,6 +1264,7 @@ amenity-motorcycle_parking # icon z17- (also has captio amenity-parking-permissive # icon z16- (also has caption(optional) z18-, area z15-) amenity-parking_entrance # icon z17- (also has caption(optional) z19-) amenity-parking_entrance-permissive # icon z17- (also has caption(optional) z19-) +disusedbusiness # icon z20- emergency-emergency_ward_entrance # icon z16- (also has caption(optional) z18-) === 250 diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index c55d358b9..e8052814f 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -267,6 +267,8 @@ public: BicycleOnedir, Ferry, ShuttleTrain, + DisusedBusiness, + Building, Count }; @@ -306,6 +308,8 @@ public: {BicycleOnedir, {"hwtag", "onedir_bicycle"}}, {Ferry, {"route", "ferry"}}, {ShuttleTrain, {"route", "shuttle_train"}}, + {DisusedBusiness, {"disusedbusiness"}}, + {Building, {"building"}}, }; m_types.resize(static_cast(Count)); @@ -1074,6 +1078,31 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) } } + // Clear POI attributes for disused businesses (e.g. disused:shop) + for (uint32_t t : params.m_types) + { + if (t == types.Get(CachedTypes::DisusedBusiness)) + { + // Avoid removing attributes in cases where e.g. shop AND disused:shop are present + bool hasPoiType = false; + for (uint32_t type : params.m_types) + { + ftype::TruncValue(type, 1); + if (type != types.Get(CachedTypes::WheelchairAny) && type != types.Get(CachedTypes::InternetAny) + && type != types.Get(CachedTypes::DisusedBusiness) && type != types.Get(CachedTypes::Building)) + { + hasPoiType = true; + break; + } + } + + if (!hasPoiType) + params.ClearPOIAttribs(); + + break; + } + } + // Process yes/no tags. TagProcessor(p).ApplyRules({ {"wheelchair", "designated", [&AddParam] { AddParam(CachedTypes::WheelchairYes); }}, diff --git a/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings b/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings index 39622a9f2..a27340dda 100644 --- a/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings +++ b/iphone/Maps/LocalizedStrings/en.lproj/LocalizableTypes.strings @@ -1382,6 +1382,7 @@ "type.shop.watches" = "Watch Store"; "type.shop.wholesale" = "Wholesale Store"; "type.shop.lighting" = "Lighting Shop"; +"type.disusedbusiness" = "Vacant Business"; "type.sport" = "Sport"; "type.sport.multi" = "Various Sports"; "type.sport.9pin" = "Bowling";