From b79f9252c4823ea0f4e68b2f965369299382a87c Mon Sep 17 00:00:00 2001 From: KTibow Date: Mon, 8 Jun 2026 11:47:51 -0700 Subject: [PATCH] Copy crossing island tag to crossing nodes --- modules/validations/crossing_ways.js | 5 ++++- test/spec/validations/crossing_ways.js | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/validations/crossing_ways.js b/modules/validations/crossing_ways.js index 5c27e2ad879..272c9ce9b97 100644 --- a/modules/validations/crossing_ways.js +++ b/modules/validations/crossing_ways.js @@ -168,11 +168,14 @@ export function validationCrossingWays(context) { return {}; } if (['marked', 'unmarked', 'traffic_signals', 'uncontrolled'].indexOf(pathFeature.tags.crossing) !== -1) { - // if the path is a crossing, match the crossing type and markings + // if the path is a crossing, match the crossing type and details var tags = { highway: 'crossing', crossing: pathFeature.tags.crossing }; if ('crossing:markings' in pathFeature.tags) { tags['crossing:markings'] = pathFeature.tags['crossing:markings']; } + if ('crossing:island' in pathFeature.tags) { + tags['crossing:island'] = pathFeature.tags['crossing:island']; + } return tags; } // don't add a `crossing` subtag to ambiguous crossings diff --git a/test/spec/validations/crossing_ways.js b/test/spec/validations/crossing_ways.js index 0a87c1878a4..01ab33cfaaa 100644 --- a/test/spec/validations/crossing_ways.js +++ b/test/spec/validations/crossing_ways.js @@ -315,8 +315,13 @@ describe('iD.validations.crossing_ways', function () { verifySingleCrossingIssue(validate(), { highway: 'crossing', crossing: 'marked', 'crossing:markings': 'zebra' }); }); - it('does not copy `crossing` and `crossing:markings` if the `crossing` tag has an unknown value', function() { - createWaysWithOneCrossingPoint({ highway: 'residential' }, { highway: 'footway', crossing: 'zebra', 'crossing:markings': 'zebra' }); + it('copies over `crossing:island`', function() { + createWaysWithOneCrossingPoint({ highway: 'residential' }, { highway: 'footway', crossing: 'marked', 'crossing:island': 'yes' }); + verifySingleCrossingIssue(validate(), { highway: 'crossing', crossing: 'marked', 'crossing:island': 'yes' }); + }); + + it('does not copy `crossing`, `crossing:markings`, and `crossing:island` if the `crossing` tag has an unknown value', function() { + createWaysWithOneCrossingPoint({ highway: 'residential' }, { highway: 'footway', crossing: 'zebra', 'crossing:markings': 'zebra', 'crossing:island': 'yes' }); verifySingleCrossingIssue(validate(), { highway: 'crossing' }); });