Use "yes" tag values only as fallbacks if there isn't a more specific

OSM key
This commit is contained in:
2026-06-29 17:28:00 +02:00
parent c33fe3b268
commit 0bcbae374b
2 changed files with 16 additions and 1 deletions

View File

@@ -56,15 +56,24 @@ const PLACE_TYPE_KEYS = [
export function getPlaceType(tags) {
if (!tags) return null;
let fallbackKey = null;
for (const key of PLACE_TYPE_KEYS) {
const value = tags[key];
if (value) {
if (value === 'yes') {
return humanizeOsmTag(key);
if (!fallbackKey) {
fallbackKey = key;
}
continue;
}
return humanizeOsmTag(value);
}
}
if (fallbackKey) {
return humanizeOsmTag(fallbackKey);
}
return null;
}

View File

@@ -89,6 +89,12 @@ module('Unit | Utility | osm', function (hooks) {
assert.strictEqual(result, 'Building');
});
test('getPlaceType ignores generic "yes" values if a more specific tag is present', function (assert) {
const tags = { historic: 'yes', building: 'tower' };
const result = getPlaceType(tags);
assert.strictEqual(result, 'Tower');
});
test('getPlaceType prioritizes order (amenity > shop > building)', function (assert) {
// If something is both a shop and a building, it should be a shop
const tags = { building: 'yes', shop: 'supermarket' };