Stack areas as well as ways. Fixes #409

This commit is contained in:
Tom MacWright
2013-01-16 14:21:20 -05:00
parent 6407fa464c
commit 140e6991ed
+29
View File
@@ -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) {