diff --git a/js/id/svg/areas.js b/js/id/svg/areas.js index b4a8a36f5..ff24afecc 100644 --- a/js/id/svg/areas.js +++ b/js/id/svg/areas.js @@ -1,4 +1,31 @@ iD.svg.Areas = function() { + + var area_stack = { + building: 0, + manmade: 1, + natural: 1, + boundary: 2 + }; + + function findKey(a) { + var vals = Object.keys(a.tags).filter(function(k) { + return area_stack[k] !== undefined; + }); + if (vals.length > 0) return area_stack[vals[0]]; + else return -1; + } + + function areastack(a, b) { + if (!a || !b || !a.tags || !b.tags) return 0; + if (a.tags.layer !== undefined && b.tags.layer !== undefined) { + return a.tags.layer - b.tags.layer; + } + var as = 0, bs = 0; + as -= findKey(a); + bs -= findKey(b); + return as - bs; + } + return function drawAreas(surface, graph, entities, filter, projection) { var areas = []; @@ -9,6 +36,8 @@ iD.svg.Areas = function() { } } + areas.sort(areastack); + var lineStrings = {}; function lineString(entity) {