!!!###!!!title=智能路由——VisActor/VGraph 教程文档!!!###!!!!!!###!!!description=在图编辑场景中,通常需要自动计算避障路由来避免连线穿越节点。通过智能路由组件 Router 所提供智能路径规划方法可计算得到自动避障的最短路径,常用于图编辑场景配合[节点编辑组件 NodeMover](/vgraph/guide/editor-spec/nodeMover) 使用,也可以用于图分析场景中用于。以下是节点编辑组件Router 的使用方法示例。也可以在 demo 中进行体验。```javascriptimport { Graph, Grid, Router } from "@visactor/vgraph";const grid = new Grid(graph, {...});const router = new Router(grid, {...} as RouterOptions);```!!!###!!!

智能路由 Router

在图编辑场景中,通常需要自动计算避障路由来避免连线穿越节点。通过智能路由组件 Router 所提供智能路径规划方法可计算得到自动避障的最短路径,常用于图编辑场景配合节点编辑组件 NodeMover 使用,也可以用于图分析场景中用于。

以下是节点编辑组件Router 的使用方法示例。也可以在 demo 中进行体验。

import { Graph, Grid, Router } from "@visactor/vgraph";
const grid = new Grid(graph, {...});
const router = new Router(grid, {...} as RouterOptions);

配置项

RouterOptions 定义如下。

字段类型描述
algorithm'AStar' | 'BStar'路径规划算法,默认为AStar。其中 AStar 结果更优但效率更低,BStar 则效率更快,数据规模较大时可选用 BStar 作为路径规划算法。
heuristic'manhattan' | 'euclidean' | 'chebyshev'距离函数。默认为曼哈顿距离 'manhattan'。
allowDiagonal'always' | 'never' | 'onlyNoObstacles'是否允许走斜线。默认为 never 。
lessDiversionboolean默认为true。是否尽量减少折角。
minDistnumber默认为20。起始位置的最短距离,用于避免路径贴边。
throwWarningboolean默认为true。在无法找到避障路径时是否抛出警告。
fallback'unchanged' | 'aligned'默认为 aligned。无法找到避障路径时的降级方案,unchanged 为不做改变,aligned 为将控制点在x或y轴对齐节点。

实例方法

实例方法返回值描述
setGrid(grid: Grid)void重新配置grid组件。
setDefaultOptions(options: RouterOptions)void重新设置Router组件默认参数。
updateEdgePath(edge: Edge, fixAnchor?: boolean)void更新连线路径。如果未配置 fixAnchor 且连线未指定 sourceAnchor 和 targetAnchor 时会自动计算路径最短的两个锚点。
destroy()void组件销毁。