2013-06-05 56 views
0

如何放大svg上的某個點,然後縮小到整個svg。只有兩種狀態,我不需要鼠標滾動縮放或放大,縮小按鈕。使用D3放大使用

我在d3文檔中查找並找到.zoom,但我不確定如何在我的環境中應用。我只看到過於複雜的滾動縮放。

回答

1

Checkout的鼠標縮放通常被實現:

var svg = d3.select("#svg") 
    .call(d3.behavior.zoom().on("zoom", redraw)) 

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

滾動會吐出像:

translate: [-66.3438, -36.359] scale: 1.1809 

爲了避免實施滾動縮放,您可以直接修改您的SVG改造屬性就像重繪功能一樣。只需使用你自己的值而不是d3.event.translate。例如:

svg.attr("transform", 
     "translate(" + [0,0] + ")" 
     + " scale(" + 2 + ")"); 

會將2x放大到svg的中心。使用5而不是2會放大5倍。

click to zoom map示例有很好的演示如何做到這一點