Ignore certain public transport results in nearby search
This commit is contained in:
@@ -40,15 +40,26 @@ export default class OsmService extends Service {
|
|||||||
];
|
];
|
||||||
const typeKeysQuery = [`~"^(${typeKeys.join('|')})$"~".*"`];
|
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 = `
|
const query = `
|
||||||
[out:json][timeout:25];
|
[out:json][timeout:25];
|
||||||
(
|
(
|
||||||
node(around:${radius},${lat},${lon})
|
node(around:${radius},${lat},${lon})
|
||||||
[${typeKeysQuery}][~"^name"~"."];
|
[${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."];
|
||||||
way(around:${radius},${lat},${lon})
|
way(around:${radius},${lat},${lon})
|
||||||
[${typeKeysQuery}][~"^name"~"."];
|
[${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."];
|
||||||
relation(around:${radius},${lat},${lon})
|
relation(around:${radius},${lat},${lon})
|
||||||
[${typeKeysQuery}][~"^name"~"."];
|
[${typeKeysQuery}]${negativeFiltersQuery}[~"^name"~"."];
|
||||||
);
|
);
|
||||||
out center;
|
out center;
|
||||||
`.trim();
|
`.trim();
|
||||||
|
|||||||
Reference in New Issue
Block a user