From 0923339250d4432ed17a80646b768f387916dda7 Mon Sep 17 00:00:00 2001 From: yunji Date: Thu, 2 Feb 2023 17:42:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E5=A4=8D=E5=90=88=E5=9B=BE=E5=B1=82=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../composite-layers/icon-layer/icon-font.ts | 19 ++++++++++------ .../composite-layers/icon-layer/icon-image.ts | 13 ++++++----- .../src/composite-layers/icon-layer/icon.ts | 16 +++++++------- .../composite-layers/src/core/core-layer.ts | 22 +++++++++---------- 4 files changed, 39 insertions(+), 31 deletions(-) diff --git a/packages/composite-layers/src/composite-layers/icon-layer/icon-font.ts b/packages/composite-layers/src/composite-layers/icon-layer/icon-font.ts index 8c6c30889..2bfd13226 100644 --- a/packages/composite-layers/src/composite-layers/icon-layer/icon-font.ts +++ b/packages/composite-layers/src/composite-layers/icon-layer/icon-font.ts @@ -1,9 +1,9 @@ -import { IconFontLayerOptions } from './types'; +import { CompositeLayer } from '../../core/composite-layer'; +import { CompositeLayerEvent, LayerGroupEvent } from '../../core/constants'; import { Scene } from '../../types'; import { DEFAULT_OPTIONS } from './constants'; import { IconLayer } from './icon'; -import { CompositeLayerEvent } from '../../core/constants'; -import { CompositeLayer } from '../../core/composite-layer'; +import { IconFontLayerOptions } from './types'; export class IconFontLayer extends IconLayer { /** @@ -25,13 +25,18 @@ export class IconFontLayer extends IconLayer { public addTo(scene: Scene) { this.scene = scene; this.initAssets(); - if (this.fontLoaded) { + const callback = () => { + this.subLayers.once(LayerGroupEvent.INITED_LAYERS, () => { + this.emit(CompositeLayerEvent.INITED, this); + this.emit(CompositeLayerEvent.ADD, this); + }); this.subLayers.addTo(scene); - this.emit(CompositeLayerEvent.ADD); + }; + if (this.fontLoaded) { + callback(); } else { this.on('fontloaded', () => { - this.subLayers.addTo(scene); - this.emit(CompositeLayerEvent.ADD); + callback(); }); } } diff --git a/packages/composite-layers/src/composite-layers/icon-layer/icon-image.ts b/packages/composite-layers/src/composite-layers/icon-layer/icon-image.ts index c932a61bb..25857e3ca 100644 --- a/packages/composite-layers/src/composite-layers/icon-layer/icon-image.ts +++ b/packages/composite-layers/src/composite-layers/icon-layer/icon-image.ts @@ -1,9 +1,9 @@ -import { IconImageLayerOptions } from './types'; +import { CompositeLayer } from '../../core/composite-layer'; +import { CompositeLayerEvent, LayerGroupEvent } from '../../core/constants'; +import { Scene } from '../../types'; import { DEFAULT_OPTIONS } from './constants'; import { IconLayer } from './icon'; -import { Scene } from '../../types'; -import { CompositeLayerEvent } from '../../core/constants'; -import { CompositeLayer } from '../../core/composite-layer'; +import { IconImageLayerOptions } from './types'; export class IconImageLayer extends IconLayer { /** @@ -21,8 +21,11 @@ export class IconImageLayer extends IconLayer { public addTo(scene: Scene) { this.scene = scene; this.initAssets().then(() => { + this.subLayers.once(LayerGroupEvent.INITED_LAYERS, () => { + this.emit(CompositeLayerEvent.INITED, this); + this.emit(CompositeLayerEvent.ADD, this); + }); this.subLayers.addTo(scene); - this.emit(CompositeLayerEvent.ADD); }); } diff --git a/packages/composite-layers/src/composite-layers/icon-layer/icon.ts b/packages/composite-layers/src/composite-layers/icon-layer/icon.ts index 98e42b9a0..3fd81adee 100644 --- a/packages/composite-layers/src/composite-layers/icon-layer/icon.ts +++ b/packages/composite-layers/src/composite-layers/icon-layer/icon.ts @@ -1,15 +1,15 @@ -import { omit, clone, isEqual, isUndefined } from '@antv/util'; -import { CompositeLayer } from '../../core/composite-layer'; -import { TextLayer } from '../../core-layers/text-layer'; +import { clone, isEqual, isUndefined, omit } from '@antv/util'; import { PointLayer } from '../../core-layers/point-layer'; -import { IconLayerOptions, IconLayerActiveOptions, IconLayerSourceOptions } from './types'; -import { getDefaultState } from './adaptor'; -import { DEFAULT_OPTIONS, DEFAULT_STATE } from './constants'; -import { ICoreLayer, Scene, MouseEvent, BlendType, ISource } from '../../types'; -import { getLabelLayerOptions } from '../common/label-layer'; +import { TextLayer } from '../../core-layers/text-layer'; +import { CompositeLayer } from '../../core/composite-layer'; import { CompositeLayerEvent } from '../../core/constants'; +import { BlendType, ICoreLayer, ISource, MouseEvent, Scene } from '../../types'; import { EMPTY_JSON_SOURCE } from '../common/constants'; +import { getLabelLayerOptions } from '../common/label-layer'; import { isGestureMultiSelect } from '../common/multi-select'; +import { getDefaultState } from './adaptor'; +import { DEFAULT_OPTIONS, DEFAULT_STATE } from './constants'; +import { IconLayerActiveOptions, IconLayerOptions, IconLayerSourceOptions } from './types'; export abstract class IconLayer extends CompositeLayer { /** diff --git a/packages/composite-layers/src/core/core-layer.ts b/packages/composite-layers/src/core/core-layer.ts index 77b13ad66..be6f44880 100644 --- a/packages/composite-layers/src/core/core-layer.ts +++ b/packages/composite-layers/src/core/core-layer.ts @@ -1,26 +1,26 @@ -import { Source } from '@antv/l7'; import EventEmitter from '@antv/event-emitter'; -import { isEqual, isUndefined, uniqueId, omit } from '@antv/util'; -import { deepMergeLayerOptions, isSourceChanged } from '../utils'; +import { Source } from '@antv/l7'; +import { isEqual, isUndefined, omit, uniqueId } from '@antv/util'; +import { MappingAttribute } from '../adaptor/attribute'; import { + AnimateAttr, + ColorAttr, ICoreLayer, ILayer, - LayerBlend, + ILegend, + ISource, LayerBaseConfig, + LayerBlend, + ScaleAttr, Scene, - SourceOptions, ShapeAttr, - ColorAttr, SizeAttr, - ScaleAttr, - AnimateAttr, + SourceOptions, StateAttribute, TextureAttr, - ISource, - ILegend, } from '../types'; +import { deepMergeLayerOptions, isSourceChanged } from '../utils'; import { CoreLayerEvent, OriginLayerEventList } from './constants'; -import { MappingAttribute } from '../adaptor/attribute'; /** * 核心图层的基础配置