From 9fc05f5e35ebfc957d392a1d8cbaf8b4e6c660b7 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Tue, 8 Jan 2013 16:07:16 -0500 Subject: [PATCH] Zoom-dependent styles, optimize difference algorithm. --- css/app.css | 2 +- css/map.css | 22 ++++++++++++++++++++++ js/id/renderer/map.js | 12 +++++++++--- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/css/app.css b/css/app.css index 9d203e660..9edceb57c 100644 --- a/css/app.css +++ b/css/app.css @@ -8,7 +8,7 @@ body { color:#222; /* text-rendering: optimizeLegibility; */ -webkit-font-smoothing: subpixel-antialiased; - } +} #iD { height: 100%; diff --git a/css/map.css b/css/map.css index 5e843b184..707fff169 100644 --- a/css/map.css +++ b/css/map.css @@ -34,6 +34,28 @@ circle.fill { transform:scale(1, 1); } +svg[data-zoom="16"] g.vertex circle.stroke, +svg[data-zoom="16"] g.vertex circle.fill { + -webkit-transform:scale(0.6, 0.6); + -moz-transform:scale(0.6, 0.6); + transform:scale(0.6, 0.6); +} + +svg[data-zoom="17"] g.vertex circle.stroke, +svg[data-zoom="17"] g.vertex circle.fill { + -webkit-transform:scale(0.7, 0.7); + -moz-transform:scale(0.7, 0.7); + transform:scale(0.7, 0.7); +} + +svg[data-zoom="16"] path.casing.tag-highway { + stroke-width:6; +} + +svg[data-zoom="16"] path.stroke.tag-highway { + stroke-width:4; +} + g.vertex circle.stroke { fill:#333; } diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index 11b6e2e8a..e15b86d88 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -78,9 +78,14 @@ iD.Map = function() { var only = {}; difference.forEach(function buildDifference(id) { only[id] = graph.fetch(id); - graph.parentWays(id).forEach(function buildOnly(parent) { - only[parent.id] = graph.fetch(parent.id); - }); + if (typeof only[id].type === 'node') { + graph.parentWays(id).forEach(function buildOnly(parent) { + // Don't re-fetch parents + if (only[parent.id] === undefined) { + only[parent.id] = graph.fetch(parent.id); + } + }); + } }); all = _.compact(_.values(only)); filter = function(d) { return d.accuracy ? d.way in only : d.id in only; }; @@ -317,6 +322,7 @@ iD.Map = function() { function redraw(difference) { dispatch.move(map); + surface.attr('data-zoom', ~~map.zoom()); tilegroup.call(background); if (map.zoom() > 16) { connection.loadTiles(projection);