0
我一直在試圖獲得如何使pannable可縮放的基本知識,並單擊中心放大元素d3工作。這個例子就是我想要做的,但我有麻煩翻譯它的地理環境之外:https://bl.ocks.org/mbostock/2206340d3單擊中心內容位置的元素或單擊
我已經完成的前兩個部分的平移和縮放,看到這裏基本小提琴https://jsfiddle.net/e9fbn2xp/
如何我可以完成將可見窗口中心的圓心居中嗎,看起來像圓圈被放大了嗎?請注意,雖然這是一個固定的位置圓,我最終會獲得動態數據,所以理想情況下我可以動態地引用圓圈位置。
這裏是我的代碼:
HTML(注意,這是陣營JSX語法,但應該是無關的問題)
<div style={{width: 800}}>
<svg style={{border: '1px solid black'}} id="viz" width="800" height="800">
</svg>
</div>
JAVASCRIPT
var svg = d3.select("#viz")
var width = svg.attr("width");
var height = svg.attr("height");
var testLayer = svg.append('g');
var aRect = testLayer.append("rect")
.attr("x", 0)
.attr("y", 0)
.attr("height", 800)
.attr("width", 800)
.attr("fill", 'green');
var aCircle = testLayer.append("circle")
.style("stroke", "gray")
.style("fill", "white")
.attr("r", 40)
.attr("cx", 200)
.attr("cy", 200)
.on("mousedown", zoomToMe);
function zoomToMe(){
console.log("do the zoom")
}
var zoom = d3.zoom()
.scaleExtent([.5, 40])
.translateExtent([[0, 0], [width, height]])
.on("zoom", zoomed);
svg.call(zoom);
function zoomed() {
testLayer.attr("transform", d3.event.transform);
}
svg.on("click", function() {
var coords = d3.mouse(this);
})