UNPKG

protomaps-leaflet

Version:

Vector tile rendering and labeling for [Leaflet](https://github.com/Leaflet/Leaflet).

92 lines (91 loc) 3.15 kB
import Point from "@mapbox/point-geometry"; import rBush from "rbush"; import { Filter } from "./painter"; import { DrawExtra, LabelSymbolizer } from "./symbolizer"; import { Bbox, JsonObject } from "./tilecache"; import { PreparedTile } from "./view"; declare type TileInvalidationCallback = (tiles: Set<string>) => void; export interface Label { anchor: Point; bboxes: Bbox[]; draw: (ctx: CanvasRenderingContext2D, drawExtra?: DrawExtra) => void; deduplicationKey?: string; deduplicationDistance?: number; } export interface IndexedLabel { anchor: Point; bboxes: Bbox[]; draw: (ctx: CanvasRenderingContext2D) => void; order: number; tileKey: string; deduplicationKey?: string; deduplicationDistance?: number; } declare type TreeItem = Bbox & { indexedLabel: IndexedLabel; }; export interface Layout { index: Index; order: number; scratch: CanvasRenderingContext2D; zoom: number; overzoom: number; } export interface LabelRule { id?: string; minzoom?: number; maxzoom?: number; dataSource?: string; dataLayer: string; symbolizer: LabelSymbolizer; filter?: Filter; visible?: boolean; sort?: (a: JsonObject, b: JsonObject) => number; } export declare const covering: (displayZoom: number, tileWidth: number, bbox: Bbox) => { display: string; key: string; }[]; export declare class Index { tree: rBush<TreeItem>; current: Map<string, Set<IndexedLabel>>; dim: number; maxLabeledTiles: number; constructor(dim: number, maxLabeledTiles: number); hasPrefix(tileKey: string): boolean; has(tileKey: string): boolean; size(): number; keys(): IterableIterator<string>; searchBbox(bbox: Bbox, order: number): Set<IndexedLabel>; searchLabel(label: Label, order: number): Set<IndexedLabel>; bboxCollides(bbox: Bbox, order: number): boolean; labelCollides(label: Label, order: number): boolean; deduplicationCollides(label: Label): boolean; makeEntry(tileKey: string): void; insert(label: Label, order: number, tileKey: string): void; pruneOrNoop(keyAdded: string): void; pruneKey(keyToRemove: string): void; removeLabel(labelToRemove: IndexedLabel): void; } export declare class Labeler { index: Index; z: number; scratch: CanvasRenderingContext2D; labelRules: LabelRule[]; callback?: TileInvalidationCallback; constructor(z: number, scratch: CanvasRenderingContext2D, labelRules: LabelRule[], maxLabeledTiles: number, callback?: TileInvalidationCallback); private layout; private findInvalidatedTiles; add(preparedTilemap: Map<string, PreparedTile[]>): number; } export declare class Labelers { labelers: Map<number, Labeler>; scratch: CanvasRenderingContext2D; labelRules: LabelRule[]; maxLabeledTiles: number; callback: TileInvalidationCallback; constructor(scratch: CanvasRenderingContext2D, labelRules: LabelRule[], maxLabeledTiles: number, callback: TileInvalidationCallback); add(z: number, preparedTilemap: Map<string, PreparedTile[]>): number; getIndex(z: number): Index | undefined; } export {};