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'; } }