From 8bec4b978ed19d910bcfcbffcc287ae38b1d1018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Mon, 23 Mar 2026 15:00:39 +0400 Subject: [PATCH] Ignore certain public transport results in nearby search --- app/services/osm.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/services/osm.js b/app/services/osm.js index f7c37c2..1c111f5 100644 --- a/app/services/osm.js +++ b/app/services/osm.js @@ -40,15 +40,26 @@ export default class OsmService extends Service { ]; const typeKeysQuery = [`~"^(${typeKeys.join('|')})$"~".*"`]; + const negativeFilters = { + public_transport: ['stop_area', 'platform'], + }; + + const negativeFiltersQuery = Object.entries(negativeFilters) + .map(([key, values]) => { + const valueRegex = `^(${values.join('|')})$`; + return `["${key}"!~"${valueRegex}"]`; + }) + .join(''); + const query = ` [out:json][timeout:25]; ( node(around:${radius},${lat},${lon}) - [${typeKeysQuery}][~"^name"~"."]; + [${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."]; way(around:${radius},${lat},${lon}) - [${typeKeysQuery}][~"^name"~"."]; + [${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."]; relation(around:${radius},${lat},${lon}) - [${typeKeysQuery}][~"^name"~"."]; + [${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."]; ); out center; `.trim();