import { Point, Bounds } from '../../types'; export interface LocalSearchRenderOptions { /** * 在地图上渲染结果用的 MapHandle。**非必传**:hook 在 `` 内部会自动取当前地图; * 在 `` 外层则需显式传**已就绪**的 handle(用 `` 或 `useMapReady` 拿)。显式传入优先。 */ map?: { __brand: string; raw: unknown; }; panel?: string | HTMLElement; selectFirstResult?: boolean; autoViewport?: boolean; viewportOptions?: { noAnimation?: boolean; margins?: number[]; zoomFactor?: number; }; } export interface LocalSearchOptions { /** 搜索城市/区域,可为字符串、Point 或 Map。**非必传**:缺省时自动回退到当前 ``(或 `renderOptions.map`),与原生 `new BMap.LocalSearch(map, {...})` 一致 */ location?: string | Point | { __brand: string; raw: unknown; }; /** 每页结果数(1-100) */ pageCapacity?: number; /** 页码(v4+) */ pageNum?: number; /** * 是否自动在地图上渲染检索结果(默认 true,与原生一致)。 * 传 `false`=**仅取数据**:不把地图注入 renderOptions.map,且缺省 location 时用地图中心点(而非 Map 实例) * 作检索区域——避免 SDK 因拿到 Map 引用而自动画默认标注。适合"取数据后自绘标注"(如门店选址)。2.0.3 新增。 */ autoRender?: boolean; /** 渲染选项 */ renderOptions?: LocalSearchRenderOptions; /** 搜索完成回调 */ onSearchComplete?: (results: unknown) => void; /** 标注设置回调 */ onMarkersSet?: (pois: unknown[]) => void; /** 信息窗回调 */ onInfoHtmlSet?: (poi: unknown, html: HTMLElement) => void; /** 结果面板回调 */ onResultsHtmlSet?: (container: HTMLElement) => void; /** 折线添加完成回调(对应 setPolylinesSetCallback) */ onPolylinesSet?: (polylines: unknown[]) => void; } export interface LocalSearchHookResult { data: T | undefined; loading: boolean; error: Error | null; supported: boolean; /** 搜索(支持多关键词数组) */ search: (keyword: string | string[], option?: { forceLocal?: boolean; }) => void; /** 周边搜索 */ searchNearby: (keyword: string | string[], center: string | Point, radius: number) => void; /** 范围搜索 */ searchInBounds: (keyword: string | string[], bounds: Bounds) => void; /** 翻页 */ gotoPage: (page: number) => void; /** 清空结果 */ clearResults: () => void; /** 选中/高亮某条结果并打开其信息窗;index 为结果索引 */ select: (index: number) => void; /** 取消选中:关掉信息窗 + 清结果列表选中态 */ clearSelected: () => void; /** 运行时设置检索城市/区域(字符串 / Point / Map) */ setLocation: (location: string | Point | { __brand: string; raw: unknown; }) => void; /** 开启检索后自动调整视野 */ enableAutoViewport: () => void; /** 关闭自动调整视野 */ disableAutoViewport: () => void; /** 开启「自动选中第一个结果」 */ enableFirstResultSelection: () => void; /** 关闭「自动选中第一个结果」 */ disableFirstResultSelection: () => void; /** 运行时设置每页结果数(1-100) */ setPageCapacity: (n: number) => void; /** 最近一次检索的状态码(BMAP_STATUS_*) */ getStatus: () => number | undefined; /** 取消当前请求 */ cancel: () => void; } export declare function useLocalSearch(opts?: LocalSearchOptions): LocalSearchHookResult;