From 6123782a9c9310a52ca2cbd22875b19832844ba5 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Sun, 30 Oct 2016 22:38:47 -0400 Subject: [PATCH] use _.throttle instead of _.debounce, call `cancel` for immediate redraws --- modules/renderer/map.js | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/modules/renderer/map.js b/modules/renderer/map.js index 9d6acd366..3203713bc 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -63,17 +63,17 @@ export function rendererMap(context) { _selection = selection; context - .on('change.map', redraw); + .on('change.map', immediateRedraw); context.history() - .on('change.map', redraw); + .on('change.map', immediateRedraw); context.background() - .on('change.map', redraw); + .on('change.map', immediateRedraw); context.features() - .on('redraw.map', redraw); + .on('redraw.map', immediateRedraw); drawLayers .on('change.map', function() { context.background().updateImagery(); - redraw(); + immediateRedraw(); }); selection @@ -103,7 +103,7 @@ export function rendererMap(context) { } }, true) .on('mouseup.zoom', function() { - if (resetTransform()) redraw(); + if (resetTransform()) immediateRedraw(); }) .on('mousemove.map', function() { mousemove = d3.event; @@ -300,7 +300,13 @@ export function rendererMap(context) { } - var queueRedraw = _.debounce(redraw, 750); + var queueRedraw = _.throttle(redraw, 750); + + + var immediateRedraw = function(difference, extent) { + if (!difference && !extent) queueRedraw.cancel(); + redraw(difference, extent); + }; function pointLocation(p) { @@ -426,7 +432,7 @@ export function rendererMap(context) { transformStart = projection.transform(); _selection.call(zoom.transform, transformStart); dispatch.call('move', this, map); - redraw(); + immediateRedraw(); } return map; @@ -443,7 +449,8 @@ export function rendererMap(context) { mouse = utilFastMouse(supersurface.node()); setCenter(center); - return redraw(); + queueRedraw(); + return map; }; @@ -471,7 +478,8 @@ export function rendererMap(context) { dispatch.call('move', this, map); } - return redraw(); + queueRedraw(); + return map; }; @@ -492,7 +500,8 @@ export function rendererMap(context) { dispatch.call('move', this, map); } - return redraw(); + queueRedraw(); + return map; }; @@ -514,7 +523,8 @@ export function rendererMap(context) { dispatch.call('move', this, map); } - return redraw(); + queueRedraw(); + return map; };