import { BaseWidget, EventHandler } from '../../core'; import { PlaceAutocompleteOptions as PlaceAutocompleteOptionsType } from '../../types'; /** * 地点自动补全事件中的建议数据 * 在 suggest、confirm、highlight 事件回调中传入。 * @category 类型 */ export interface PlaceAutocompleteEventSuggestion { province: string; city: string; district: string; /** POI 名称(如"京酱肉丝"、"百度大厦"等) */ name: string; /** @deprecated 使用 name 字段代替。为兼容旧版保留,值与 name 相同 */ street: string; business: string; address: string; tag?: string; point?: BMapGL.Point; uid?: string; } /** * 高亮切换事件数据 * @category 类型 */ export interface HighlightItem { index: number; value: PlaceAutocompleteEventSuggestion; } /** * 地点自动补全组件 * 提供输入框与建议下拉列表,支持键盘导航、防抖请求、城市限定;通过 on('suggest' | 'select' | 'highlight') 监听交互。 * @category 功能 */ export declare class PlaceAutocomplete extends BaseWidget { private readonly options; private inputEl; private dropdownEl; private clearBtn; private debounceTimer; private lastSuggestions; private lastKeyword; private activeIndex; private isOpen; private cityId; private requestId; private blurTimer; private outsideClickHandler; private justSelected; private destroyed; private readonly isMobile; private inputHandler; private keydownHandler; private focusHandler; private blurHandler; private clearBtnHandler; /** * @param container 挂载容器选择器或 DOM 元素 * @param options 配置项,map 必传 */ constructor(container: string | HTMLElement, options: PlaceAutocompleteOptionsType); /** * 手动触发检索 * @param keyword 检索关键词 */ search(keyword: string): void; /** * 设置输入框的值(不触发检索) * @param value 输入值 */ setInputValue(value: string): void; /** 获取输入框当前值 */ getInputValue(): string; /** * 设置检索城市 * @param location 城市名称 */ setLocation(location: string): void; /** * 设置是否严格限制在指定城市内搜索 * @param citylimit 是否限制 */ setCitylimit(citylimit: boolean): void; /** * 设置结果类型过滤 * @param types 类型 */ setTypes(types: PlaceAutocompleteOptionsType['types']): void; /** 显示下拉列表 */ show(): void; /** 隐藏下拉列表 */ hide(): void; /** * 监听事件,支持 `suggest`、`select`、`highlight` 事件 * @param event 事件名 * @param handler 事件处理函数 * @returns 组件实例 */ on(event: 'suggest' | 'select' | 'highlight', handler: EventHandler): this; /** * 移除事件监听,支持 `suggest`、`select`、`highlight` 事件 * @param event 事件名 * @param handler 可选,要移除的回调;不传则移除该事件的全部监听 * @returns 组件实例 */ off(event: 'suggest' | 'select' | 'highlight', handler?: EventHandler): this; destroy(): void; protected render(): void; private bindEvents; private initCityId; private onInput; private fetchSuggestions; private renderSuggestions; private onKeyDown; private moveActive; private updateActiveUI; private confirmActive; private selectItem; private toEventSuggestion; private getMaxResults; private setupOutsideClick; private toggleClearButton; }