import { Map as MapLibreMap } from 'maplibre-gl'; import { UnifiedSearchItem } from '../core/types'; /** * Options for configuring the FootprintLayer */ export interface FootprintLayerOptions { /** Fill color for unselected footprints */ fillColor?: string; /** Fill color for selected footprints */ selectedFillColor?: string; /** Outline color */ outlineColor?: string; /** Outline width in pixels */ outlineWidth?: number; } /** * Manages display of LiDAR item footprints on the map. * Shows item boundaries with selection highlighting. * * @example * ```typescript * const footprintLayer = new FootprintLayer(map); * footprintLayer.setItems(searchResults); * footprintLayer.setSelectedIds(new Set(['item-1', 'item-2'])); * footprintLayer.zoomToFootprints(); * ``` */ export declare class FootprintLayer { private _map; private _options; private _sourceId; private _fillLayerId; private _outlineLayerId; private _selectedLayerId; private _items; private _selectedIds; private _clickHandler?; private _layersInitialized; /** * Creates a new FootprintLayer instance. * * @param map - MapLibre GL map instance * @param options - Configuration options */ constructor(map: MapLibreMap, options?: FootprintLayerOptions); /** * Sets the items to display as footprints. * * @param items - Unified search items to display */ setItems(items: UnifiedSearchItem[]): void; /** * Attempts to render footprints, polling if style isn't ready yet. */ private _tryRender; /** * Gets the currently displayed items. */ getItems(): UnifiedSearchItem[]; /** * Sets which items are selected (highlighted). * * @param ids - Set of selected item IDs */ setSelectedIds(ids: Set): void; /** * Gets the currently selected item IDs. */ getSelectedIds(): Set; /** * Registers a click handler for footprint clicks. * * @param handler - Function called with item ID when a footprint is clicked */ onClick(handler: (itemId: string) => void): void; /** * Clears all footprints from the map. */ clear(): void; /** * Zooms the map to fit all footprints. * * @param padding - Padding in pixels (default: 50) * @param duration - Animation duration in ms (default: 1000) */ zoomToFootprints(padding?: number, duration?: number): void; /** * Zooms to a specific item. * * @param itemId - The item ID to zoom to * @param padding - Padding in pixels (default: 50) */ zoomToItem(itemId: string, padding?: number): void; /** * Shows/hides the footprint layers. * * @param visible - Whether layers should be visible */ setVisibility(visible: boolean): void; /** * Cleans up resources and removes layers from the map. */ destroy(): void; private _initLayers; private _setupInteraction; private _updateLayer; private _updateSelectedFilter; private _clearLayer; private _removeLayers; } //# sourceMappingURL=FootprintLayer.d.ts.map