mirror of https://gitee.com/antv-l7/antv-l7
feat: 修复地图缩放后 picking 第一帧不渲染的问题
This commit is contained in:
parent
0e9d92987c
commit
2043ea9100
|
@ -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';
|
||||
return false;
|
||||
// 如果上一次触发的事件在 48 ms 以上,则这一次不放弃触发
|
||||
if(betweenPickRenderTime > 48) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
this.lastRenderType = 'picking';
|
||||
return true;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue