import VectorWorker from './vectorWorker.js'; import type { TileRequest } from '../worker.spec.js'; import type { HeatmapDefinition, HeatmapWorkerLayer, PointDefinition, PointWorkerLayer } from 'style/style.spec.js'; import type { HeatmapFeature, PointFeature, PointWorker as PointWorkerSpec, VTFeature } from './process.spec.js'; /** Internal organization to hold specific point features */ export interface Features { point: PointFeature[]; heatmap: HeatmapFeature[]; } /** Worker for processing point data */ export default class PointWorker extends VectorWorker implements PointWorkerSpec { #private; featureStore: Map; /** * Setup a layer for future data processing * @param layerDefinition - layer definition * @returns the pre-processed layer */ setupLayer(layerDefinition: PointDefinition | HeatmapDefinition): PointWorkerLayer | HeatmapWorkerLayer; /** * Build a point feature * @param tile - the tile request * @param extent - the tile extent * @param feature - the vector tile feature * @param layer - the layer definition * @param mapID - the map id to ship the data back to * @param sourceName - the source name for the data to belong to * @returns true if the feature was built */ buildFeature(tile: TileRequest, extent: number, feature: VTFeature, layer: PointWorkerLayer | HeatmapWorkerLayer, mapID: string, sourceName: string): boolean; /** * Flush the feature store (all processed data is sent back to the main thread) * @param mapID - the map id to ship the data back to * @param tile - the tile request * @param sourceName - the source name the data to belongs to * @param wait - this promise must be resloved before flushing. */ flush(mapID: string, tile: TileRequest, sourceName: string, wait: Promise): Promise; }