接口需求介绍
通过接口算法生成SVG连线图,成图布局满足连线的少交叉和不重叠,尽可能美观,清晰展示出连线关系,图形保持一定的长款比例,全屏显示时充满挣个屏幕。
示意图如下:
经过查阅了好多资料,发现全部都是理论,论文等,真的是小弟才学疏浅看不懂,学不会,只能磕磕绊绊的一点点用自己的办法扣出来ಥ_ಥ,如果有什么好的办法可以指导下小弟,谢谢
开发前的想法
- 首先先了解一下 < svg> ,java代码是拼接svg的语句输出字符串到页面中。
- 上述图片看到的内容,我们可以看到我们需要的数据是哪些,一个方块的对象主体,以及他的联络关系及层级。
- 最下面为一级,他固定且唯一,但是他宽度,要根据第二层的数量进行计算。
- 第二层和第一层是直连,他的关系摆放也无需去考虑。
- 第三层和第二层的折线连接,便需要计算,再对其数据进行最优的摆放关系。
- 第三层和第二层的折线链接,要计算出口,入口,及对象前经过了其他的线路。
开发思路
- 我们通过面向对象的方式,把每一个方块[业务数据主体],创建一个对象,他的属性有名称连线关系,方块,连线,折线的计算后的x,y轴对象,
- 拿到基础数据之后,我们通过步骤去进行
- 对源数据进行分组,封装成计算方式。
- 整体的布局策略,居中排列。
- 开始构建布局,对二层连接关系少的升序排列,然后就第三层,第三层的排列计算方式,我是根据每一个对象再每一个位置坐标下,进行连线的距离作为判断依据,然后把第三层最优的占位距离进行分配第三层的下标。
- 第三层连线,计算每个三层和二层的出入口,相同下标的总出入口作为x轴的间隔,y轴的间隔根据所有的连线计算总高度相除,获取高度间隔。