Graphviz专注于一个节点

时间:2011-04-22 01:11:23

标签: php javascript iframe graphviz

我正在创建一个场景,我从XML文件(节点+边缘)创建图形。该图表是作为iframe内的SVG生成的。我想要做的是能够点击一个节点并让该节点聚焦(不同的颜色,滚动到位)。

我得到的是我在传递给graphviz的属性中传递一个URL,该URL在查询字符串中有焦点节点,因此my-url.php?focus = 2将聚焦节点ID 2.然后,在属性创建,我将焦点节点的颜色更改为亮黄色。

问题是我找不到向下滚动到此节点的方法。我必须通过向下滚动来手动搜索节点。有没有办法让我可以获得焦点的节点坐标并将其传递给托管iframe的窗口?这样,我就可以使用Javascript向下滚动(或向右)。

有什么想法吗?我不是在寻找一个完整的解决方案。如果可行的话,我可以使用策略(并且可以在最新的浏览器上运行。它不必向后兼容)。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以通过调用没有-T选项的点来检索SVG中节点的位置(它生成点文件,其中节点用“pos”属性注释,指示它们的绘制位置。然后,当$ _GET [ 'focus']是42(即my-url.php?focus = 42是请求的),my-url.php应该生成Javascript代码,它会将iframe滚动到节点42的位置,使用像scrollTo这样的东西(http: //stackoverflow.com/questions/1192228/scrolling-an-iframe-with-javascript)。

要确保即使图像已缩放(右边是SVG)也能正常工作,您需要将滚动的位置乘以SVG的总宽度与点图的宽度之比由“size”图形属性设置(高度相同)。