import { BaseWidget } from '../../core/base-widget'; import { EventHandler } from '../../core/types'; import { RoutePlanOptions, RoutePlanType, RoutePlanSearchOptions, NormalizedRouteResult } from './types'; /** * 路径规划组件 * * 一期仅对外开放驾车路径规划。 * * @example * ```typescript * const routePlan = new RoutePlan(container, { * map: map, * drivingOptions: { * policy: DrivingPolicy.AVOID_CONGESTION, * alternatives: 1 * } * }); * * // 搜索路径 * routePlan.search({ * start: new BMapGL.Point(116.404, 39.915), * end: new BMapGL.Point(116.305, 39.982) * }); * * // 监听结果事件 * routePlan.on('result', (data: RoutePlanEventData) => { * console.log('路径规划结果:', data); * // 可以使用归一化的数据在地图上绘制路线 * }); * * // 监听错误事件 * routePlan.on('error', (error: Error) => { * console.error('路径规划失败:', error.message); * }); * ``` * * @category 功能 */ export declare class RoutePlan extends BaseWidget { private readonly options; private currentType; private readonly services; private contentContainer; private lastResult; private lastSearchOptions; /** 当前选中的方案索引(用于开始导航时与 UI 一致) */ private selectedPlanIndex; /** 是否正在请求路线数据(用于控制内容区显示) */ private isSearching; /** * 创建路径规划组件实例 * * @param container 挂载容器(DOM 元素或选择器) * @param options 组件配置项 */ constructor(container: string | HTMLElement, options: RoutePlanOptions); /** * 搜索路径 * * @param searchOptions 搜索参数 * @returns Promise * * @example * ```typescript * // 基础搜索 * await routePlan.search({ * start: new BMapGL.Point(116.404, 39.915), * end: new BMapGL.Point(116.305, 39.982) * }); * * // 驾车带途经点 * await routePlan.search({ * start: new BMapGL.Point(116.404, 39.915), * end: new BMapGL.Point(116.305, 39.982), * waypoints: [ * new BMapGL.Point(116.35, 39.95) * ] * }); * ``` */ search(searchOptions: RoutePlanSearchOptions): Promise; /** * 切换路径规划类型 * * @param type 路径规划类型 * * @example * ```typescript * routePlan.switchType('driving'); * ``` */ switchType(type: RoutePlanType): void; /** * 清空结果 * * @example * ```typescript * routePlan.clear(); * ``` */ clear(): void; /** * 获取当前路径规划类型 * * @returns 当前类型 */ getCurrentType(): RoutePlanType; /** * 获取上次搜索结果 * * @returns 上次的结果,如果没有则返回 null */ getLastResult(): NormalizedRouteResult | null; /** * 注册事件监听 * * 支持的事件: * - `result`: 搜索成功,参数为 RoutePlanEventData * - `error`: 搜索失败,参数为 Error * - `typechange`: 类型切换,参数为 { type: RoutePlanType } * - `planselect`: 方案选中(展开),参数为 { type, planIndex, plan } * - `clear`: 清空结果 * * @param event 事件名 * @param handler 回调函数 * @returns this */ on(event: 'result' | 'error' | 'typechange' | 'planselect' | 'clear' | 'navclick', handler: EventHandler): this; /** * 移除事件监听,支持 `result`、`error`、`typechange`、`planselect`、`clear`、`navclick` 事件 * @param event 事件名 * @param handler 可选,要移除的回调;不传则移除该事件的全部监听 * @returns this */ off(event: 'result' | 'error' | 'typechange' | 'planselect' | 'clear' | 'navclick', handler?: EventHandler): this; /** * 销毁组件 */ destroy(): void; /** * 渲染组件 UI */ protected render(): void; /** 根据是否有路线数据控制内容区(路线卡)显示/隐藏 */ private setContentWrapVisible; private searchByType; /** * 初始化路径规划服务 */ private initServices; }