import { Point, MapHandle } from '../../types'; import { DrivingRouteResult } from '../../types/results'; export interface DrivingRouteRenderOptions { /** * 在地图上渲染路线用的 MapHandle。**非必传**: * - hook 用在 `` **内部**(子树里)时,不传会自动取当前地图; * - hook 用在 `` **外层**时,context 取不到,需显式传**已就绪**的 handle(非 null)。 * 拿就绪 handle:用 ``,或在 `` 内放 `useMapReady` 把 handle 上提到外层 state。 * 显式传入始终优先于自动获取。 */ map?: MapHandle; panel?: string | HTMLElement; selectFirstResult?: boolean; autoViewport?: boolean; viewportOptions?: { noAnimation?: boolean; margins?: number[]; zoomFactor?: number; }; /** * 拖拽起终点重新规划(仅驾车/公交/货车生效;步行、骑行 SDK 内部强制关闭)。 * 类型包未声明,但运行时 renderOptions.enableDragging 真实生效。2.0.2 新增。 */ enableDragging?: boolean; } export interface DrivingRouteOptions { /** * 检索上下文(城市/坐标/地图)。**非必传**:缺省时自动回退到当前 ``(或 `renderOptions.map`)—— * 与原生 `new BMap.DrivingRoute(map, {...})` 把 map 当第一参数一致。只在需要指定特定城市时才显式传。 */ location?: string | MapHandle; policy?: number; /** * 是否同时返回多条备选路线(对应 SDK DrivingRoute 构造项 alternatives)。 * 类型包未声明,但运行时确有此项;开启后结果 plan 会含多条路线。仅驾车支持。2.0.2 新增。 */ alternatives?: boolean; /** * 是否自动在地图上渲染路线(默认 true)。传 `false`=**仅取数据**:不注入 renderOptions.map, * 缺省 location 时用地图中心点(而非 Map 实例)作检索上下文,避免 SDK 因拿到 Map 引用而自动画路线。 * 适合"取路线数据后自绘"。2.0.3 新增。(walking/riding/transit/truck 继承本项) */ autoRender?: boolean; renderOptions?: DrivingRouteRenderOptions; onSearchComplete?: (results: DrivingRouteResult) => void; onMarkersSet?: (pois: unknown[]) => void; onInfoHtmlSet?: (poi: unknown, html: HTMLElement) => void; onPolylinesSet?: (polylines: unknown[]) => void; onResultsHtmlSet?: (container: HTMLElement) => void; } export interface DrivingRouteHookResult { data: DrivingRouteResult | undefined; loading: boolean; error: Error | null; supported: boolean; /** 搜索(start/end 必须是 Point,不支持字符串地址) */ search: (start: Point, end: Point, options?: { waypoints?: Point[]; }) => void; clearResults: () => void; enableAutoViewport: () => void; disableAutoViewport: () => void; setPolicy: (policy: number) => void; setLocation: (location: string | MapHandle) => void; /** 运行时设置路线折线样式(strokeColor / strokeWeight / strokeOpacity 等),2.0.4 新增 */ setPolylineStyle: (style: Record) => void; getStatus: () => number | undefined; cancel: () => void; } export declare function useDrivingRoute(opts?: DrivingRouteOptions): DrivingRouteHookResult;