diff --git a/src/ol/renderer/Map.js b/src/ol/renderer/Map.js index ee5ec70342..c0aa0ec3aa 100644 --- a/src/ol/renderer/Map.js +++ b/src/ol/renderer/Map.js @@ -9,7 +9,6 @@ import {inView} 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'; -import {add} from '../coordinate.js'; /** * @abstract @@ -128,6 +127,8 @@ class MapRenderer extends Disposable { return entry.value; }); } + + const tmpCoord = []; for (let i = 0; i < offsets.length; i++) { for (let j = numLayers - 1; j >= 0; --j) { const layerState = layerStates[j]; @@ -135,10 +136,13 @@ class MapRenderer extends Disposable { if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter.call(thisArg2, layer)) { const layerRenderer = layer.getRenderer(); const source = layer.getSource(); + const coordinates = source.getWrapX() ? translatedCoordinate : coordinate; if (layerRenderer && source) { const callback = forEachFeatureAtCoordinate.bind(null, layerState.managed); + tmpCoord[0] = coordinates[0] + offsets[i][0]; + tmpCoord[1] = coordinates[1] + offsets[i][1]; result = layerRenderer.forEachFeatureAtCoordinate( - add(source.getWrapX() ? translatedCoordinate : coordinate, offsets[i]), + tmpCoord, frameState, hitTolerance, callback, declutteredFeatures); } if (result) { diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 5a8b180c39..226b729b0d 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -108,15 +108,15 @@ import {assert} from '../../asserts.js'; class WebGLPointsLayerRenderer extends WebGLLayerRenderer { /** - * @param {import("../../layer/Vector.js").default} vectorLayer Vector layer. + * @param {import("../../layer/Layer.js").default} layer Layer. * @param {Options=} options Options. */ - constructor(vectorLayer, options) { + constructor(layer, options) { const uniforms = options.uniforms || {}; const projectionMatrixTransform = createTransform(); uniforms[DefaultUniform.PROJECTION_MATRIX] = projectionMatrixTransform; - super(vectorLayer, { + super(layer, { uniforms: uniforms, postProcesses: options.postProcesses }); @@ -289,8 +289,8 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { * @inheritDoc */ prepareFrame(frameState) { - const vectorLayer = this.getLayer(); - const vectorSource = vectorLayer.getSource(); + const layer = this.getLayer(); + const vectorSource = layer.getSource(); const viewState = frameState.viewState; // the source has changed: clear the feature cache & reload features @@ -332,8 +332,8 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { * @private */ rebuildBuffers_(frameState) { - const vectorLayer = this.getLayer(); - const vectorSource = vectorLayer.getSource(); + const layer = this.getLayer(); + const vectorSource = layer.getSource(); // saves the projection transform for the current frame state const projectionTransform = createTransform();