From 8003e7b3d3babfeb681655658588c889bd2a0376 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Fri, 5 Jul 2019 10:17:15 -0400 Subject: [PATCH] Allow the `layer` and `level` tag to differentiate very close points (close #6612) --- data/core.yaml | 2 ++ dist/locales/en.json | 3 +++ modules/validations/close_nodes.js | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/data/core.yaml b/data/core.yaml index b3c0a3a1e..5cc6fd21d 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -1558,6 +1558,8 @@ en: title: Use a bridge or tunnel use_different_layers: title: Use different layers + use_different_layers_or_levels: + title: Use different layers or levels use_different_levels: title: Use different levels use_tunnel: diff --git a/dist/locales/en.json b/dist/locales/en.json index 69efd0175..9d505660e 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1952,6 +1952,9 @@ "use_different_layers": { "title": "Use different layers" }, + "use_different_layers_or_levels": { + "title": "Use different layers or levels" + }, "use_different_levels": { "title": "Use different levels" }, diff --git a/modules/validations/close_nodes.js b/modules/validations/close_nodes.js index 274f6dcbb..0f7efc7aa 100644 --- a/modules/validations/close_nodes.js +++ b/modules/validations/close_nodes.js @@ -134,6 +134,19 @@ export function validationCloseNodes(context) { if (nearby.loc === node.loc || geoSphericalDistance(node.loc, nearby.loc) < pointThresholdMeters) { + // allow very close points if the z-axis varies + var zAxisKeys = { layer: true, level: true }; + var zAxisDifferentiates = false; + for (var key in zAxisKeys) { + var nodeValue = node.tags[key] || '0'; + var nearbyValue = nearby.tags[key] || '0'; + if (nodeValue !== nearbyValue) { + zAxisDifferentiates = true; + break; + } + } + if (zAxisDifferentiates) continue; + issues.push(new validationIssue({ type: type, severity: 'warning', @@ -151,6 +164,10 @@ export function validationCloseNodes(context) { new validationIssueFix({ icon: 'iD-operation-disconnect', title: t('issues.fix.move_points_apart.title') + }), + new validationIssueFix({ + icon: 'iD-icon-layers', + title: t('issues.fix.use_different_layers_or_levels.title') }) ] }));