import { EventEmitter } from 'eventemitter3'; import type { L7Container } from '../../inversify.config'; import type { ISceneConfig } from '../config/IConfigService'; import type { ILayer } from '../layer/ILayerService'; import type { ISceneService } from './ISceneService'; /** * will emit `loaded` `resize` `destroy` event panstart panmove panend */ export default class Scene extends EventEmitter implements ISceneService { private container; destroyed: boolean; loaded: boolean; private readonly id; /** * 使用各种 Service */ private get iconService(); private get fontService(); private get controlService(); private get configService(); private get map(); private get coordinateSystemService(); private get rendererService(); private get layerService(); private get debugService(); private get cameraService(); private get interactionService(); private get pickingService(); private get shaderModuleService(); private get markerService(); private get popupService(); /** * 是否首次渲染 */ private inited; private rendering; /** * canvas 容器 */ private $container; private canvas; private markerContainer; private resizeDetector; private hooks; constructor(container: L7Container); init(sceneConfig: ISceneConfig): void; private registerContextLost; addLayer(layer: ILayer): void; addMask(mask: ILayer): void; render(): Promise; /** * 用户自定义添加第三方字体 (用户使用 layer/point/text/iconfont 的前提需要加载第三方字体文件) * @param fontFamily * @param fontPath */ addFontFace(fontFamily: string, fontPath: string): void; getSceneContainer(): HTMLDivElement; exportPng(type?: 'png' | 'jpg'): Promise; getSceneConfig(): Partial; getPointSizeRange(): Float32Array; addMarkerContainer(): void; getMarkerContainer(): HTMLElement; destroy(): void; private handleWindowResized; private handleDPRChange; private initContainer; private setCanvas; private handleMapCameraChanged; private addSceneEvent; }