2017-04-03 24 views
1

d3ズームにもう1つ問題があります。d3.js v4は、中心にズームします(マウスの位置ではありません!!)

グラフの中央にズームしようとしました(マウスの位置を無視します)。しかし私は私のために働くものは何も見つかりません。

私はthisを試しましたが、うまく動作しません。

ドキュメントに何も見つかりませんでした。

ズーム動作:

//zoom behavior 
let zoom = d3.zoom() 
    .scaleExtent([0.5, 5]) 
    .on("zoom", zoomed); 

function zoomed() { 
    .. some behavior .. 
    //center here? 
    .. some behavior .. 
} 

私はそれがどこかに明確に文書化されていませんだ、なぜこれが、実行すると理解していない簡単なものであるべきだと思います。

全体については、this fiddleを参照してください。

ヘルプは大変ありがとうございます

答えて

0

私は私の問題を解決することができました。

詳細はthis fiddleを参照してください。

これはxパンニングも無効にすることに注意してください。

ここに関連するコード:

function getBoundingBoxCenterX (selection) { 
    let element = selection.node(); 
    let bbox = element.getBBox(); 
    return bbox.x + bbox.width/2; 
} 

//zoom behavior 
let zoom = d3.zoom() 
    .scaleExtent([1, 5]) 
    .on("zoom", zoomed); 

function zoomed() { 
    let center = getBoundingBoxCenterX(rect); //rect is the charts parent which expands while zooming 
    let chartsWidth = (2 * center) * d3.event.transform.k; 
    d3.event.transform.x = center - chartsWidth/2; 

    rescaling operations with d3.event.transform.... 
} 
関連する問題