2016-07-20 11 views
-1

d3.jsにカスタムズーム機能をいくつか作成しようとしています。現在、ズームは1回のクリックでトリガーされ、ズームインしてクリックされた領域にのみフォーカスします。D3マウスホイールのズーム方向

現在のところ、私のコードには正確に必要なことを行うfunction zoom(d)があります。また、var zoomTransitionはzoom()の内部にあり、多くの機能を担っています。残念ながら私のコードの多くを共有することはできません。

ズームは、マウスのスクロールでも発生する必要があります。私が抱えている問題は次のとおりです。

 .on("wheel", function(d){ 
      zoom(d); 
     }); 

スクロールホイールの方向は無視されます。ズームは、ホイールがスクロールされているか、スクロールされているかのように単純に呼び出されます。

スクロール方向にアクセスしてズーム()に渡す方法はありますか?これを行うより良い方法は?

答えて

3

は、この探していましたスクロールホイール情報。

2

d3のズーム動作が便利です。

例コード:

var zoom = d3.behavior.zoom() 
     .scaleExtent([0, 10]) 
     .on("zoom", redraw); //if you are sure that your zoom function is working just replace redraw with your zoom function 


function redraw() { 
    return svg.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")"); 
} 

全例:

.on("wheel", function(d){ 
      var direction = d3.event.wheelDelta < 0 ? 'down' : 'up'; 
      zoom(direction === 'up' ? d : d.parent); 
     }); 

詳しいので、JavaScriptのD3よりも、それはあなたがアクセスする方法は次のとおりです。

http://bl.ocks.org/mbostock/2206340

+0

@altocumulus thanks man :) typescript .. – echonax

関連する問題