Ich denke, es wäre gut, die Problemumgehung zu teilen, die ich gefunden habe, um mit diesem Problem umzugehen. Was ich getan habe ist, den Hörer auf den Start der Bürste zu verwenden, um „zu deaktivieren“, um den Zoom:
zoom.on("zoom",null);
selection.call(zoom);
und aktivieren Sie es wieder auf dem brushend Ereignis.
Es gibt einen weiteren Trick zu berücksichtigen und kommt von der Tatsache, dass es wichtig ist, den Skala und Übergang Werte der letzten gültigen Zoom Interaktion zu speichern, so dass Sie diese Werte verwenden, wenn die Bürste zu aktivieren auf dem brushend Ereignisse wie diese
zoom.scale(lastEventScale).translate(lastEventTranslate).on("zoom",drawZoom);
selection.call(scatterZoom);
würde ich höre andere mehr „elegant“ Lösungen für dieses Problem lieben.
Für meinen Fall habe ich nur:. 'D3.select ('svg') auf ('mousedown.zoom', null);' – Tony
Um Panning wieder zu aktivieren, nur tun selection.call (Zoom); –
Dies funktioniert nicht auf d3 v4. Es scheint, dass Zoomen und Ziehen separate Ereignisse sind ('d3.zoom()', 'd3.drag()'), so dass dies kein Problem mehr ist. (Definiere nicht 'd3.drag(). On (" drag ", function() {})') – NuclearPeon