@orca-fe/x-map
Version:
63 lines (62 loc) • 2.12 kB
TypeScript
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
import { CanvasTexture, Group, PlaneGeometry } from 'three';
import ThreeLayer, { ThreeLayerOptions } from './ThreeLayer';
import IMap from '../core/IMap';
export declare type HeatmapData = {
lng: number;
lat: number;
value: number;
};
export interface ThreeHeatmapLayerOptions extends ThreeLayerOptions {
/** 热力图颜色跨度 */
colors?: [number, string][];
/** 热力图色阶的精度 */
colorPrecision?: number;
min?: number;
max?: number;
maxZoom?: number;
minZoom?: number;
data?: HeatmapData[];
dataPrecision?: number;
z?: number;
opacity?: number;
radius?: number;
}
export default class ThreeHeatmapLayer extends ThreeLayer {
protected heatmapTexture: CanvasTexture;
protected shaderPass?: ShaderPass;
protected renderPass?: RenderPass;
protected composer: EffectComposer;
protected dataOrigin?: HeatmapData[];
protected heatmapObj3D: Group;
protected planeGeometry: PlaneGeometry;
dataPrecision: number;
min: number;
max?: number;
minZoom?: number;
maxZoom?: number;
z: number;
opacity: number;
radius: number;
constructor(options?: ThreeHeatmapLayerOptions);
/**
* 设置热力图颜色
* @param colors 热力值对应的颜色
* @param precision 热力图颜色精度
*/
setHeatmapColor(colors: [number, string][], precision?: number): void;
createObject(): void;
setData(data: HeatmapData[], max?: number, min?: number): void;
setMin(min?: number): void;
setMax(max?: number): void;
setMinZoom(minZoom?: number): void;
setMaxZoom(maxZoom?: number): void;
setOpacity(opacity?: number): void;
setRadius(radius: number): void;
updatePosition(): void;
setMap(map: IMap): void;
add(): void;
destroy(): void;
}