Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 3djs,力图。如何保持缩放级别_Javascript_D3.js_Svg - Fatal编程技术网

Javascript 3djs,力图。如何保持缩放级别

Javascript 3djs,力图。如何保持缩放级别,javascript,d3.js,svg,Javascript,D3.js,Svg,我正在尝试将缩放级别保存到数据库。我取得了进步,但我有一些问题需要解决 事情就是这样。在我的力图初始渲染中,我的缩放级别是精确的。换句话说,我就是这么做的: svg.append("defs").selectAll("marker") .data(["suit", "licensing", "resolved"]) .enter().append("marker") .attr("id", function (d) { return d; }) .attr("viewBox", "0

我正在尝试将缩放级别保存到数据库。我取得了进步,但我有一些问题需要解决

事情就是这样。在我的力图初始渲染中,我的缩放级别是精确的。换句话说,我就是这么做的:

 svg.append("defs").selectAll("marker")
.data(["suit", "licensing", "resolved"])
.enter().append("marker")
.attr("id", function (d) {
    return d;
})
.attr("viewBox", "0 -5 10 10")
.attr("refX", 25)
.attr("refY", 0)
.attr("markerWidth", 4)
.attr("markerHeight", 4)
.attr("orient", "auto")
.append("path")    
.attr("d", "M 0,0 m -5,-5 L 5,0 L -5,5 Z")
.style("stroke", "#4679BD")
.style("opacity", "0.6")
.attr("transform", "translate(" + zoomWidth + "," + zoomHeight + ") scale(" + 
 scale + ")");
//This line restores the zoom
svg.attr("transform", "translate(" + graph.zoomTranslateX + "," + 
 graph.zoomTranslateY + ") scale(" + graph.scale + ")")
这是设置初始缩放和缩放级别的代码行,它工作正常:

 svg.attr("transform", "translate(" + graph.zoomTranslateX + "," + 
 graph.zoomTranslateY + ") scale(" + graph.scale + ")")
如果我检查html中的SVG元素,一旦加载了图表,我就可以看到它已正确设置:

<g transform="translate(-12632.3077320904,-830.9843396749) scale(24.25)"
据我所知,d3.event.translate和d3.event.scale应该选择svg元素上设置的初始值。。。。但事实并非如此


任何细节都值得欣赏。

当创建初始缩放变量时,它必须具有预定义的值,以便可以继续,如下所示:

var zoom = d3.behavior.zoom()
.scaleExtent([-40, 100])
.on("zoom", zoomed);
//Make sure zoom picks from the initial value that is set on DOM!!!
zoom.scale(graph.scale);
zoom.translate([graph.zoomTranslateX, graph.zoomTranslateY]);

类似charm:)

当创建初始缩放变量时,它必须具有预定义值才能继续,如下所示:

var zoom = d3.behavior.zoom()
.scaleExtent([-40, 100])
.on("zoom", zoomed);
//Make sure zoom picks from the initial value that is set on DOM!!!
zoom.scale(graph.scale);
zoom.translate([graph.zoomTranslateX, graph.zoomTranslateY]);

类似于charm:)

你是说鼠标滚动有一个跳跃…还是你能做一把小提琴。它会跳回初始值,覆盖我的值。我找到了解决办法。我马上就发。谢谢你的时间:)你是说鼠标滚动有一个跳跃…或者你能做一个小提琴。它跳回初始值,覆盖我的值。我找到了解决办法。我马上就发。感谢您抽出时间:)