图层、编辑与可视化 API
JS 0.1.0-alpha.37 · 2026-10-09。来源为当前源码生成的 TypeScript 声明。优先使用 load() 返回的 Namespace;底层类的 Client 参数由绑定构造器注入,业务不需自行创建。private/protected 成员不属于公开接入。
layers
import { LngLat, LngLatLike, Size, Pixel } from './core';
import { Map, Overlay } from './map';
export interface TileLayerOptions {
map?: Map;
tileUrl: string;
opacity?: number;
zooms?: [number, number];
tileSize?: number;
visible?: boolean;
}
/** Caller-supplied XYZ imagery. No third-party imagery subscription is implied. */
export declare class TileLayer extends Overlay {
constructor(options: TileLayerOptions);
positions(): LngLat[];
getTileUrl(): string;
setTileUrl(value: string): this;
setOpacity(value: number): this;
getOpacity(): number;
reload(): this;
}
export interface MassPoint {
lnglat: LngLatLike;
style?: number;
[key: string]: unknown;
}
export interface MassStyle {
url: string;
size?: Size | [number, number];
anchor?: Pixel | [number, number];
}
export interface MassMarksOptions {
map?: Map;
opacity?: number;
zooms?: [number, number];
style?: MassStyle | MassStyle[];
visible?: boolean;
}
/** One GPU source/layer for the whole point set; no DOM element per point. */
export declare class MassMarks extends Overlay {
constructor(data: MassPoint[], options?: MassMarksOptions);
positions(): LngLat[];
setData(data: MassPoint[]): this;
getData(): {
style?: number;
lnglat: [number, number];
}[];
clear(): this;
setStyle(style: MassStyle | MassStyle[]): this;
getStyle(): {
url: string;
size?: Size | [number, number];
anchor?: Pixel | [number, number];
}[];
}
heatmap
import { LngLat } from './core';
import { Map, Overlay } from './map';
export interface HeatMapPoint {
lng: number;
lat: number;
count?: number;
}
export interface HeatMapDataSet {
data: HeatMapPoint[];
max?: number;
}
export interface HeatMapOptions {
radius?: number;
opacity?: [number, number];
gradient?: Record<number, string>;
zooms?: [number, number];
visible?: boolean;
zIndex?: number;
}
/** GPU density rendering. Coordinates follow the map's WGS84 contract. */
export declare class HeatMap extends Overlay {
constructor(map: Map | null, options?: HeatMapOptions);
positions(): LngLat[];
setDataSet(dataset: HeatMapDataSet): this;
getDataSet(): HeatMapDataSet;
addDataPoint(longitude: number, latitude: number, count?: number): this;
setOptions(options: HeatMapOptions): this;
getOptions(): HeatMapOptions;
setzIndex(value: number): this;
getzIndex(): number;
}
clustering
import { LngLat, LngLatLike } from './core';
import { Map, Marker, Overlay } from './map';
export interface ClusterPoint {
lnglat: LngLatLike;
weight?: number;
[key: string]: unknown;
}
export interface ClusterRenderContext {
marker: Marker;
count: number;
clusterData: ClusterPoint[];
}
export interface MarkerClusterOptions {
gridSize?: number;
maxZoom?: number;
minClusterSize?: number;
averageCenter?: boolean;
zoomOnClick?: boolean;
renderClusterMarker?: (context: ClusterRenderContext) => void;
renderMarker?: (context: ClusterRenderContext) => void;
}
/** Grid clustering in world pixel space; groups stay stable while panning at a fixed zoom. */
export declare class MarkerCluster extends Overlay {
constructor(map: Map | null, data?: ClusterPoint[], options?: MarkerClusterOptions);
setData(data: ClusterPoint[]): this;
addData(data: ClusterPoint[]): this;
getCount(): number;
getClustersCount(): number;
setGridSize(value: number): this;
getGridSize(): number;
setMaxZoom(value: number): this;
getMaxZoom(): number;
setMinClusterSize(value: number): this;
getMinClusterSize(): number;
getAverageCenter(): boolean;
positions(): LngLat[];
}
editors
import { Evented, LngLatLike } from './core';
import { Map, Marker, Polyline, Polygon, PathOptions, CircleOptions } from './map';
/** Click vertices, double-click to finish; close(true) removes only this tool's overlays. */
export declare class MouseTool extends Evented {
constructor(map: Map);
marker(options?: Omit<ConstructorParameters<typeof Marker>[0], 'position' | 'map'>): this;
polyline(options?: Partial<PathOptions>): this;
polygon(options?: Partial<PathOptions>): this;
circle(options?: Partial<CircleOptions>): this;
rectangle(options?: Partial<PathOptions>): this;
close(clear?: boolean): this;
destroy: () => void;
}
/** Vertex handles plus draggable edge midpoints. Right-click a vertex to remove it. */
export declare class PolylineEditor extends Evented {
constructor(map: Map, target?: Polyline);
setTarget(target?: Polyline): this;
getTarget(): Polyline | undefined;
open(): this;
close(): this;
addNode(position: LngLatLike, index?: number): this;
removeNode(index: number): this;
destroy: () => void;
}
export declare class PolygonEditor extends PolylineEditor {
constructor(map: Map, polygon?: Polygon);
setTarget(target?: Polygon): this;
getTarget(): Polygon | undefined;
}