protomaps-leaflet
Version:
Vector tile rendering and labeling for [Leaflet](https://github.com/Leaflet/Leaflet).
92 lines (91 loc) • 3.15 kB
TypeScript
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 {};