fix: canvas layer issues fixed (#1080)

* chore: update version 2.8.30 -> 2.8.31

* feat: 修复 canvasLayer hide/show 方法的失效

* fix: 修复 canvasLayer 在销毁时候的问题

* style: lint style
This commit is contained in:
YiQianYao 2022-04-25 15:11:34 +08:00 committed by GitHub
parent c58ea55551
commit 90f92f069b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 34 deletions

View File

@ -73,6 +73,9 @@ export interface ILayerModel {
needUpdate(): boolean; needUpdate(): boolean;
clearModels(): void; clearModels(): void;
// canvasLayer
clearCanvas?(): void;
// earth mode // earth mode
setEarthTime?(time: number): void; setEarthTime?(time: number): void;
} }

View File

@ -54,7 +54,7 @@ export default class CanvaModel extends BaseModel {
public clearModels(): void { public clearModels(): void {
if (this.canvas) { if (this.canvas) {
document.removeChild(this.canvas); this.mapService.getContainer()?.removeChild(this.canvas);
// @ts-ignore // @ts-ignore
this.canvas = null; this.canvas = null;
} }

View File

@ -761,6 +761,10 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
} }
public hide(): ILayer { public hide(): ILayer {
if (this.type === 'CanvasLayer' && this.layerModel.clearCanvas) {
// 对 canvasLayer 的 hide 操作做特殊处理
this.layerModel.clearCanvas();
}
this.updateLayerConfig({ this.updateLayerConfig({
visible: false, visible: false,
}); });
@ -1170,7 +1174,6 @@ export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter
this.hooks.beforeRender.call(); this.hooks.beforeRender.call();
this.layerModelNeedUpdate = false; this.layerModelNeedUpdate = false;
} }
if (this.layerModel.renderUpdate) { if (this.layerModel.renderUpdate) {
this.layerModel.renderUpdate(); this.layerModel.renderUpdate();
} }

View File

@ -132,39 +132,35 @@ export default class Demo extends React.Component {
this.scene = scene; this.scene = scene;
scene.on('loaded', () => { scene.on('loaded', () => {
fetch( const layer = new CanvasLayer({})
'https://gw.alipayobjects.com/os/basement_prod/337ddbb7-aa3f-4679-ab60-d64359241955.json', .style({
) zIndex: 10,
.then((res) => res.json()) update: 'always',
.then((data) => { // update: 'dragend',
const layer = new CanvasLayer({}) drawingOnCanvas: this.draw,
.style({ })
zIndex: 10, .animate({
update: 'always', enable: true,
// update: 'dragend',
drawingOnCanvas: this.draw,
})
.animate({
enable: true,
});
scene.addLayer(layer);
setInterval(() => {
x += 0.1;
layer.style({
drawingOnCanvas: this.draw,
});
scene.render();
}, 30);
// setTimeout(() => {
// console.log('reSet');
// layer.style({
// update: 'dragend',
// });
// scene.render();
// }, 3000);
}); });
scene.addLayer(layer);
setInterval(() => {
x += 0.1;
}, 30);
setTimeout(() => {
console.log('time out hide');
layer.hide();
}, 2000);
setTimeout(() => {
console.log('show');
layer.show();
}, 3000);
// setTimeout(() => {
// scene.removeLayer(layer)
// }, 2000)
}); });
} }