From d2df1615758797482261b48af05adea2aad11bcf Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Tue, 26 Nov 2013 21:38:02 +0200 Subject: [PATCH] Fix trembling on zoom in As you zoom in, the rounding error in translate was multiplied by scale because it was applied post-translate (which was rounded). This seems to fix the issue. --- js/id/renderer/map.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index 1000a1baa..8c12a2f52 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -176,14 +176,13 @@ iD.Map = function(context) { .scale(d3.event.scale / (2 * Math.PI)); var scale = d3.event.scale / transformStart[0], - tX = Math.round(d3.event.translate[0] / scale - transformStart[1][0]), - tY = Math.round(d3.event.translate[1] / scale - transformStart[1][1]); + tX = Math.round((d3.event.translate[0] / scale - transformStart[1][0]) * scale), + tY = Math.round((d3.event.translate[1] / scale - transformStart[1][1]) * scale); var transform = - 'scale(' + scale + ')' + (iD.detect().opera ? 'translate(' + tX + 'px,' + tY + 'px)' : - 'translate3d(' + tX + 'px,' + tY + 'px, 0)'); + 'translate3d(' + tX + 'px,' + tY + 'px, 0)') + ' scale(' + scale + ')'; transformed = true; supersurface.style(transformProp, transform);