SSukha 地图开发者文档

图层、编辑与可视化 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;
}