mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-15 21:48:20 +02:00
Better layer sorting to fix z-depth issues..
This commit is contained in:
@@ -42,6 +42,26 @@ _.extend(iD.Way.prototype, {
|
||||
if (this.nodes[this.nodes.length - 1] === node) return 'suffix';
|
||||
},
|
||||
|
||||
layer: function() {
|
||||
// explicit layer tag..
|
||||
if (this.tags.layer !== undefined) return +(this.tags.layer);
|
||||
|
||||
// implied layer tag..
|
||||
if (this.tags.location === 'overground') return 1;
|
||||
if (this.tags.location === 'underground') return -1;
|
||||
if (this.tags.location === 'underwater') return -10;
|
||||
|
||||
if (this.tags.power === 'line') return 20;
|
||||
if (this.tags.power === 'minor_line') return 15;
|
||||
if (this.tags.aerialway) return 10;
|
||||
if (this.tags.bridge) return 1;
|
||||
if (this.tags.cutting) return -1;
|
||||
if (this.tags.tunnel) return -1;
|
||||
if (this.tags.waterway) return -1;
|
||||
if (this.tags.manmade === 'pipeline') return -10;
|
||||
return 0;
|
||||
},
|
||||
|
||||
isOneWay: function() {
|
||||
// explicit oneway tag..
|
||||
if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
|
||||
|
||||
+32
-31
@@ -1,36 +1,36 @@
|
||||
iD.svg.Lines = function(projection) {
|
||||
|
||||
var highway_stack = {
|
||||
motorway: 0,
|
||||
motorway_link: 1,
|
||||
trunk: 2,
|
||||
trunk_link: 3,
|
||||
primary: 4,
|
||||
primary_link: 5,
|
||||
secondary: 6,
|
||||
tertiary: 7,
|
||||
unclassified: 8,
|
||||
residential: 9,
|
||||
service: 10,
|
||||
footway: 11
|
||||
};
|
||||
// var highway_stack = {
|
||||
// motorway: 0,
|
||||
// motorway_link: 1,
|
||||
// trunk: 2,
|
||||
// trunk_link: 3,
|
||||
// primary: 4,
|
||||
// primary_link: 5,
|
||||
// secondary: 6,
|
||||
// tertiary: 7,
|
||||
// unclassified: 8,
|
||||
// residential: 9,
|
||||
// service: 10,
|
||||
// footway: 11
|
||||
// };
|
||||
|
||||
function waystack(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;
|
||||
}
|
||||
if (a.tags.bridge) return 1;
|
||||
if (b.tags.bridge) return -1;
|
||||
if (a.tags.tunnel) return -1;
|
||||
if (b.tags.tunnel) return 1;
|
||||
var as = 0, bs = 0;
|
||||
if (a.tags.highway && b.tags.highway) {
|
||||
as -= highway_stack[a.tags.highway];
|
||||
bs -= highway_stack[b.tags.highway];
|
||||
}
|
||||
return as - bs;
|
||||
}
|
||||
// function waystack(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;
|
||||
// }
|
||||
// if (a.tags.bridge) return 1;
|
||||
// if (b.tags.bridge) return -1;
|
||||
// if (a.tags.tunnel) return -1;
|
||||
// if (b.tags.tunnel) return 1;
|
||||
// var as = 0, bs = 0;
|
||||
// if (a.tags.highway && b.tags.highway) {
|
||||
// as -= highway_stack[a.tags.highway];
|
||||
// bs -= highway_stack[b.tags.highway];
|
||||
// }
|
||||
// return as - bs;
|
||||
// }
|
||||
|
||||
return function drawLines(surface, graph, entities, filter) {
|
||||
var lines = [],
|
||||
@@ -47,7 +47,8 @@ iD.svg.Lines = function(projection) {
|
||||
}
|
||||
|
||||
lines = lines.filter(path);
|
||||
lines.sort(waystack);
|
||||
// lines.sort(waystack);
|
||||
lines.sort(function(a, b) { return a.layer() - b.layer(); });
|
||||
|
||||
function drawPaths(klass) {
|
||||
var paths = surface.select('.layer-' + klass)
|
||||
|
||||
Reference in New Issue
Block a user