Merge pull request #10011 from jahow/fix-webgl-typecheck

Fix a type checking error on the WebGL points renderer
This commit is contained in:
Olivier Guyot
2019-09-26 15:46:32 +02:00
committed by GitHub
2 changed files with 13 additions and 9 deletions

View File

@@ -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) {

View File

@@ -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();