From 4b9b0860bf6337de119fd1d784a0009925226354 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Fri, 22 Nov 2019 13:09:46 -0500 Subject: [PATCH] Fix incomplete rendering of unclosed multipolygon rings (close #2945) --- modules/osm/relation.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/osm/relation.js b/modules/osm/relation.js index a01ee2342..f7f48013a 100644 --- a/modules/osm/relation.js +++ b/modules/osm/relation.js @@ -307,12 +307,16 @@ Object.assign(osmRelation.prototype, { outers = osmJoinWays(outers, resolver); inners = osmJoinWays(inners, resolver); - outers = outers.map(function(outer) { - return outer.nodes.map(function(node) { return node.loc; }); - }); - inners = inners.map(function(inner) { - return inner.nodes.map(function(node) { return node.loc; }); - }); + var wayToLineString = function(way) { + if (way.nodes[0] !== way.nodes[way.nodes.length - 1]) { + // treat all parts as closed even if they aren't + way.nodes.push(way.nodes[0]); + } + return way.nodes.map(function(node) { return node.loc; }); + }; + + outers = outers.map(wayToLineString); + inners = inners.map(wayToLineString); var result = outers.map(function(o) { // Heuristic for detecting counterclockwise winding order. Assumes