feat: 修复地图缩放后 picking 第一帧不渲染的问题

This commit is contained in:
2912401452 2021-09-18 16:58:56 +08:00
parent 0e9d92987c
commit 2043ea9100
3 changed files with 17 additions and 2 deletions

View File

@ -23,6 +23,8 @@ export default class LayerService implements ILayerService {
private lastRenderType: string;
private lastPickRenderTime: number;
@inject(TYPES.IRendererService)
private readonly renderService: IRendererService;
@ -129,6 +131,12 @@ export default class LayerService implements ILayerService {
// 渲染检测
private renderTest(renderType: string | undefined): boolean {
const now = new Date().getTime()
const betweenPickRenderTime = now - this.lastPickRenderTime;
if(renderType === 'picking') {
this.lastPickRenderTime = new Date().getTime();
}
// 继续渲染事件
if (renderType) {
switch (renderType) {
@ -140,7 +148,12 @@ export default class LayerService implements ILayerService {
this.lastRenderType === 'animate'
) {
this.lastRenderType = 'picking';
// 如果上一次触发的事件在 48 ms 以上,则这一次不放弃触发
if(betweenPickRenderTime > 48) {
return true;
} else {
return false;
}
} else {
this.lastRenderType = 'picking';
return true;

View File

@ -243,12 +243,14 @@ export default class PixelPickingPass<
* });
*/
private highlightPickedFeature(pickedColors: Uint8Array | undefined) {
// @ts-ignore
const [r, g, b] = pickedColors;
this.layer.hooks.beforeHighlight.call([r, g, b]);
this.layerService.renderLayers();
}
private selectFeature(pickedColors: Uint8Array | undefined) {
// @ts-ignore
const [r, g, b] = pickedColors;
this.layer.hooks.beforeSelect.call([r, g, b]);
this.layerService.renderLayers();

View File

@ -165,7 +165,7 @@ export default class PointTest extends React.Component {
})
.select(true)
// .animate(true)
.active(true);
// .active(true);
scene.on('loaded', () => {
scene.addLayer(layer);