javascript - svg-pan-zoom -- 在不同的浏览器尺寸中平移并缩放到同一位置

标签 javascript svg zooming pan svgpanzoom

我正在使用 ariutta svg-pan-zoom 库( https://github.com/ariutta/svg-pan-zoom )。 (也可与 jquery.layout.js Pane 和 jquery-ui.js 一起使用)

我想保存 svg-pan-zoom svg 的平移和缩放值等值,并使用这些值使用具有不同大小窗口的浏览器跳转到相同位置。

目前我正在使用 getPan() 和 getZoom() 来保存值;然后在另一个浏览器中缩放(zoom)和平移(pan)以缩放和平移到同一位置。当浏览器窗口大小不同时,这不起作用。

我找到了这篇文章,但它没有解决不同大小的窗口:
Pan to specific X and Y coordinates and center image svg-pan-zoom

最佳答案

平移和缩放与当前容器大小有关。所以你想要的是计算可见 SVG 部分的中心点。然后在新窗口中计算新的平移应该是什么以具有该 SVG 的点(即前一种情况的中心)。 至于缩放,这取决于您想要如何使其工作,但您可以使用真实缩放。

要获取容器大小和实际缩放,请使用instance.getSizes()

例如计算 x 轴:

var s = instance.getSizes()
var p = instance.getPan()
var relativeX = s.width / 2 / (p.x + s.viewBox.width * s.realZoom)

// After resize
var s = instance.getSizes()
var p = instance.getPan()
var x = (s.width / 2 / relativeX) - s.viewBox.width * s.realZoom
instance.pan({x: x, y: 0})

对 Y 轴执行相同的操作

关于javascript - svg-pan-zoom -- 在不同的浏览器尺寸中平移并缩放到同一位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622644/

相关文章:

javascript - 迭代所有表单元素,无论其类型如何

javascript - 如何将点击事件分配给 d3js 中的每个 svg 元素

javascript - 饼图外弧边界d3(svg)

css - 谷歌地图 - 用鼠标滚动 map 缩放要求 ctrl 按钮

html - 在图像上创建了鼠标悬停缩放效果,首先是模糊,然后是锐利

javascript - 如何使用 css 悬停在另一个元素和伪类上制作叠加层::之前

javascript - 错误 : [object Object] on Javascript

JavaScript数组迭代方法

javascript - 在单独的 HTML、JS 和 CSS 文件中破坏 D3 不起作用

html - 无法在页脚上方居中显示联系信息