Ignore certain public transport results in nearby search

This commit is contained in:
2026-03-23 15:00:39 +04:00
parent cd9676047d
commit 8bec4b978e

View File

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