【发布时间】:2013-10-07 23:46:05
【问题描述】:
主要问题很简单...我正在制作一个相当大的组织结构图(或家谱),我想知道我应该使用 SVG 还是 Canvas。
某些要求可能会影响选择:
- 必须能够显示 1 到 50,000 个节点/人
- 需要像 Google/Bing 地图一样平移和缩放。
- 需要能够单击一个节点并弹出一个对话框,其中包含有关此人的更多详细信息。
我最初倾向于使用 SVG,但我听说在绘制大量项目时它会出现性能问题。此外,Canvas 似乎在旧版浏览器中得到了更好的支持。
【问题讨论】:
-
我假设您的意思是您有多达 50k 个节点要显示来自的数据,而不是一次?由于您需要缓冲视图,您可以查看leafletjs.com 并查看是否可以帮助您(org/gen. 图表原则上是地图)。
-
我需要显示树的形状,尽管我不必一次将每个节点的所有数据都拉下来。当有人查看 50k 个节点时,它会开始非常缩小。
-
使用 SVG 处理
onclick事件要容易得多,因为每个对象都有一个与之关联的实际 DOM 元素。 -
我肯定会在上面的原始问题中补充一点,这个组织结构图是高度可变的,我还需要能够显示完整组织结构图的子集。
-
几年前我已经这样做了。编写了一个网络应用程序:myfamilyhealth.com(试试看,如果需要,可以使用一次性电子邮件,注册是免费的)。那时我只是简单地使用 div 和 css 来绘制图表。它仍然使用 div 和 css 实现。我们的竞争对手使用闪存。我们故意避免使用 Flash 以提供更灵敏的体验。我用相当大的英国王室家族树进行了测试。如果树向上或向下递归大于 10 次,则它不会绘制完整的树,而是为您提供探索远处分支的链接。
标签: javascript html canvas svg