From e335f0a086a6c390e2701619f69760ae5a63461d Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Wed, 11 Dec 2019 16:32:00 -0500 Subject: [PATCH] Don't style untagged multipolygon member lines as area boundaries if they also have belong to non-multipolygon relations (close #6787) --- modules/svg/lines.js | 19 ++++++++++++++++--- modules/svg/tag_classes.js | 2 -- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/modules/svg/lines.js b/modules/svg/lines.js index 9d6464c596..f33f9e6ce9 100644 --- a/modules/svg/lines.js +++ b/modules/svg/lines.js @@ -136,9 +136,22 @@ export function svgLines(projection, context) { .attr('class', function(d) { var prefix = 'way line'; - if (!d.hasInterestingTags() && graph.parentMultipolygons(d).length > 0) { - // fudge the classes to style multipolygon member lines as area edges - prefix = 'relation area'; + + // if this line isn't styled by its own tags + if (!d.hasInterestingTags()) { + + var parentRelations = graph.parentRelations(d); + var parentMultipolygons = parentRelations.filter(function(relation) { + return relation.isMultipolygon(); + }); + + // and if it's a member of at least one multipolygon relation + if (parentMultipolygons.length > 0 && + // and only multipolygon relations + parentRelations.length === parentMultipolygons.length) { + // then fudge the classes to style this as an area edge + prefix = 'relation area'; + } } var oldMPClass = oldMultiPolygonOuters[d.id] ? 'old-multipolygon ' : ''; diff --git a/modules/svg/tag_classes.js b/modules/svg/tag_classes.js index 9db493da45..c0fe37390f 100644 --- a/modules/svg/tag_classes.js +++ b/modules/svg/tag_classes.js @@ -50,8 +50,6 @@ export function svgTagClasses() { if (/\bstroke\b/.test(value)) { if (!!t.barrier && t.barrier !== 'no') { overrideGeometry = 'line'; - } else if (t.type === 'multipolygon' && !entity.hasInterestingTags()) { - overrideGeometry = 'area'; } }