diff --git a/src/core/Constract.ts b/src/core/Constract.ts index 0f4e6c7..38df017 100644 --- a/src/core/Constract.ts +++ b/src/core/Constract.ts @@ -33,6 +33,6 @@ const Constract = Object.freeze({ HEIGHT_WAY_LABEL: 0.03, HEIGHT_WAY_LINE: 0.02, - MAX_MEASURE_INSTANCES: 1000, + MAX_MEASURE_INSTANCES: 20000, }) export default Constract diff --git a/src/core/manager/InstancePointManager.ts b/src/core/manager/InstancePointManager.ts index f2f9945..05effac 100644 --- a/src/core/manager/InstancePointManager.ts +++ b/src/core/manager/InstancePointManager.ts @@ -146,18 +146,12 @@ export default class InstancePointManager { viewport: Viewport, geometry: THREE.BufferGeometry, material: THREE.Material, - maxInstances: number = 1000 + maxInstances: number = 20000 ): InstancePointManager { return new InstancePointManager(name, viewport, geometry, material, maxInstances) } - private constructor( - name: string, - viewport: Viewport, - geometry: THREE.BufferGeometry, - material: THREE.Material, - maxInstances: number = 1000 - ) { + private constructor(name: string, viewport: Viewport, geometry: THREE.BufferGeometry, material: THREE.Material, maxInstances: number) { this.viewport = viewport this.geometry = geometry this.material = material diff --git a/src/core/manager/LabelManager.ts b/src/core/manager/LabelManager.ts index e4a26eb..06c3f04 100644 --- a/src/core/manager/LabelManager.ts +++ b/src/core/manager/LabelManager.ts @@ -36,9 +36,13 @@ export interface LabelOption { export default class LabelManager implements IControls { viewport: Viewport private labelMap: Map = new Map() + private labelGroup: THREE.Group init(viewport: Viewport): void { this.viewport = viewport + this.labelGroup = new THREE.Group() + this.labelGroup.visible = false + this.viewport.scene.add(this.labelGroup) } createOrUpdateLabelByDistance(lineRef: Object3DLike, startPos: THREE.Vector3, endPos: THREE.Vector3, option: LabelOption): Text | CSS2DObject { @@ -64,7 +68,7 @@ export default class LabelManager implements IControls { const labelObj = this.createLabelObject(option) parentObj.userData.labelObjectId = labelObj.uuid - this.viewport.scene.add(labelObj) + this.labelGroup.add(labelObj) if (labelObj instanceof CSS2DObject) { labelObj.element.innerHTML = option.text @@ -99,7 +103,7 @@ export default class LabelManager implements IControls { if (parentObj?.userData?.labelObjectId) { const labelObj = this.labelMap.get(parentObj.userData.labelObjectId) this.labelMap.delete(labelObj.uuid) - this.viewport.scene.remove(labelObj) + this.labelGroup.remove(labelObj) labelObj.dispose() parentObj.userData.labelObjectId = undefined } @@ -108,7 +112,7 @@ export default class LabelManager implements IControls { removeById(id: string): void { const labelObj = this.labelMap.get(id) if (labelObj) { - this.viewport.scene.remove(labelObj) + this.labelGroup.remove(labelObj) this.labelMap.delete(id) labelObj.dispose() } @@ -160,6 +164,8 @@ export default class LabelManager implements IControls { dispose(): void { // 清理资源 + this.viewport.scene.remove(this.labelGroup) + this.labelGroup.clear() this.viewport = undefined }