From 24ac02e118d1ebda8b7dc608a841d51d9ab802e8 Mon Sep 17 00:00:00 2001 From: Mart van de Ven Date: Wed, 18 Mar 2026 17:59:48 +0800 Subject: [PATCH] fix: drop legacy-only place names --- .../com/protomaps/basemap/layers/Places.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/tiles/src/main/java/com/protomaps/basemap/layers/Places.java b/tiles/src/main/java/com/protomaps/basemap/layers/Places.java index 5b3c3b2b..e4f144ff 100644 --- a/tiles/src/main/java/com/protomaps/basemap/layers/Places.java +++ b/tiles/src/main/java/com/protomaps/basemap/layers/Places.java @@ -244,8 +244,39 @@ private Map makeTagMap(String kind, String kindDetail, Integer p return computedTags; } + private static boolean isCurrentNameKey(String key) { + return key.equals("name") || key.startsWith("name:"); + } + + private static boolean isOldNameKey(String key) { + return key.equals("old_name") || + key.equals("old:name") || + key.startsWith("old_name:") || + key.startsWith("old:name:"); + } + + private static boolean hasAnyCurrentName(SourceFeature sf) { + return sf.tags().keySet().stream().anyMatch(Places::isCurrentNameKey); + } + + private static boolean hasAnyOldName(SourceFeature sf) { + return sf.tags().keySet().stream().anyMatch(Places::isOldNameKey); + } + + private static boolean isLegacyOnlyPlace(SourceFeature sf) { + return hasAnyOldName(sf) && !hasAnyCurrentName(sf); + } + public void processOsm(SourceFeature sf, FeatureCollector features) { - if (!sf.isPoint() || !sf.hasTag("name") || !sf.hasTag("place")) { + if (!sf.isPoint() || !sf.hasTag("place")) { + return; + } + + if (isLegacyOnlyPlace(sf)) { + return; + } + + if (!hasAnyCurrentName(sf)) { return; }