Fix decluttering on VectorImage layers
This commit is contained in:
+2
-11
@@ -10,6 +10,7 @@ import {TRUE} from '../functions.js';
|
||||
import {visibleAtResolution} from '../layer/Layer.js';
|
||||
import {shared as iconImageCache} from '../style/IconImageCache.js';
|
||||
import {compose as composeTransform, makeInverse} from '../transform.js';
|
||||
import {renderDeclutterItems} from '../render.js';
|
||||
|
||||
/**
|
||||
* @abstract
|
||||
@@ -266,17 +267,7 @@ class MapRenderer extends Disposable {
|
||||
* @param {?import("../PluggableMap.js").FrameState} frameState Frame state.
|
||||
*/
|
||||
renderFrame(frameState) {
|
||||
if (this.declutterTree_) {
|
||||
this.declutterTree_.clear();
|
||||
}
|
||||
const items = frameState.declutterItems;
|
||||
for (let z = items.length - 1; z >= 0; --z) {
|
||||
const zIndexItems = items[z];
|
||||
for (let i = 0, ii = zIndexItems.length; i < ii; i += 3) {
|
||||
this.declutterTree_ = zIndexItems[i].renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], this.declutterTree_);
|
||||
}
|
||||
}
|
||||
items.length = 0;
|
||||
this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,6 +11,7 @@ import CanvasVectorLayerRenderer from './VectorLayer.js';
|
||||
import {listen} from '../../events.js';
|
||||
import EventType from '../../events/EventType.js';
|
||||
import ImageState from '../../ImageState.js';
|
||||
import {renderDeclutterItems} from '../../render.js';
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
@@ -72,6 +73,7 @@ class CanvasVectorImageLayerRenderer extends CanvasImageLayerRenderer {
|
||||
let skippedFeatures = this.skippedFeatures_;
|
||||
const context = vectorRenderer.context;
|
||||
const imageFrameState = /** @type {import("../../PluggableMap.js").FrameState} */ (assign({}, frameState, {
|
||||
declutterItems: [],
|
||||
size: [
|
||||
getWidth(renderedExtent) / viewResolution,
|
||||
getHeight(renderedExtent) / viewResolution
|
||||
@@ -86,6 +88,7 @@ class CanvasVectorImageLayerRenderer extends CanvasImageLayerRenderer {
|
||||
(vectorRenderer.replayGroupChanged ||
|
||||
!equals(skippedFeatures, newSkippedFeatures))) {
|
||||
vectorRenderer.renderFrame(imageFrameState, layerState);
|
||||
renderDeclutterItems(imageFrameState, null);
|
||||
skippedFeatures = newSkippedFeatures;
|
||||
callback();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user