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();