使用manhattan路由和segments工具:相关性的异常问题
- Dominant language
- TypeScript
- Stars
- 6.7k
- Forks
- 1.9k
- PR merge metrics
- No merged PRs in 30d
Description
### 问题描述
不确定 AntV X6 是否仍在维护。在使用过程中,我们遇到了路由(尤其是 manhattan 路由)与 segments 辅助工具的兼容性问题,这些问题在历史 GitHub Issues 中已有其他用户反馈,但至今未得到解决。若 X6 仍在维护,希望能解决这些问题,或提供相关的排查思路;此外,飞书流程图中类似的 “路由 + 线段调整工具” 功能表现稳定(如 Manhattan 路由与线段拖动无冲突、工具响应灵敏),也希望可以参考飞书流程图的实现逻辑,重写或优化 X6 中路由与 segments 工具的交互逻辑。
涉及的历史 Issue 如下:
路由 + segments 工具组合时的线条拖动 Bug:https://github.com/antvis/X6/issues/3660
Edge 的 segments 工具显示异常:https://github.com/antvis/X6/issues/3783
两个节点用 manhattan 斜向连线时,segments 工具不显示:https://github.com/antvis/X6/issues/4516
segments 工具与 manhattan 路由组合使用的问题:https://github.com/antvis/X6/issues/1324
Edge 辅助工具的灵敏性问题:https://github.com/antvis/X6/issues/1540
segments 线段调整工具操作不灵敏:https://github.com/antvis/X6/issues/1541
【segments】横向连线(起点 / 终点 y 坐标相同)时,工具无法上下拖动连线:https://github.com/antvis/X6/issues/3564
### 重现链接
https://codesandbox.io/p/sandbox/segmentswen-ti-wvsxvn
### 重现步骤
初始化 X6 画布,添加 2 个及以上 Rect 节点,调整节点位置以覆盖以下场景:水平排列(起点和终点 y 坐标相同)、垂直排列(起点和终点 x 坐标相同)、斜向排列(起点和终点呈对角线分布),以及连线密集布局(多个节点近距离排列,连线交错)。
为节点间的连线(Edge)配置 manhattan 路由,可使用默认的 router.options,或显式设置参数(如 { step: 20 })。
为连线启用 segments 辅助工具:在连线的配置中加入 tools: [new X6.Tool.Segments()]。
执行以下交互操作并观察结果:
拖动连线的线段或折点,调整连线形状;
刷新画布后,查看 segments 工具的控制点是否正常显示;
对水平连线(起点和终点 y 坐标相同),尝试向上或向下拖动线段;
在 “连线密集” 的画布中,hover 或点击 segments 工具的控制点。
### 预期行为
拖动连线时:线段应跟随鼠标平滑调整,严格遵循 manhattan 路由的 “直角转向” 规则,无线段错位、卡顿或突然跳转的情况。
工具显示时:segments 工具的控制点,应在所有符合 manhattan 路由规则的连线上(包括斜向连线、水平 / 垂直连线等)稳定显示,且随连线的长度、方向变化实时更新。
水平连线操作时:可通过 segments 工具上下拖动线段,生成符合 manhattan 规则的折点。
交互灵敏性:segments 工具的控制点,在 hover 或点击时响应及时(无明显延迟);即使连线密集,也能准确识别目标控制点,不误触其他连线或节点。
### 平台
- 操作系统: [macOS, Windows, Linux, React Native ...]
- 网页浏览器: [Google Chrome, Safari, Firefox ...]
- X6 版本: [2.11.1 ...]
### 屏幕截图或视频(可选)
_No response_
### 补充说明(可选)
_No response_
Contributor guide
Research direction
Start with the linked CodeSandbox reproduction, the manhattan router, and X6.Tool.Segments. Compare the listed horizontal, vertical, diagonal, and dense-layout cases with the expected interaction and display behavior. Done would require a decided scope and verified fixes for the reported dragging, visibility, responsiveness, and Manhattan-routing compatibility problems.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100