Replace VectorTileRenderType enum with typedef

This commit is contained in:
Maximilian Krög
2022-07-16 23:11:02 +02:00
parent 7f2f789d7f
commit 361f1ab837
7 changed files with 18 additions and 48 deletions

View File

@@ -81,7 +81,7 @@ class ErrorEvent extends BaseEvent {
* Recommended value: Vector tiles are usually generated with a buffer, so this value should match
* the largest possible buffer of the used tiles. It should be at least the size of the largest
* point symbol or line width.
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
* @property {import("./VectorTile.js").VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
* rotated views.

View File

@@ -4,7 +4,6 @@
import BaseVectorLayer from './BaseVector.js';
import CanvasVectorTileLayerRenderer from '../renderer/canvas/VectorTileLayer.js';
import TileProperty from './TileProperty.js';
import VectorTileRenderType from './VectorTileRenderType.js';
import {assert} from '../asserts.js';
/***
@@ -17,6 +16,10 @@ import {assert} from '../asserts.js';
* 'change:source'|'change:preload'|'change:useInterimTilesOnError'|import("../render/EventType").LayerRenderEventTypes, Return>} VectorTileLayerOnSignature
*/
/**
* @typedef {'hybrid' | 'vector'} VectorTileRenderType
*/
/**
* @typedef {Object} Options
* @property {string} [className='ol-layer'] A CSS class name to set to the layer element.
@@ -44,7 +47,7 @@ import {assert} from '../asserts.js';
* Recommended value: Vector tiles are usually generated with a buffer, so this value should match
* the largest possible buffer of the used tiles. It should be at least the size of the largest
* point symbol or line width.
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
* @property {VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
* rotated views.
@@ -126,16 +129,13 @@ class VectorTileLayer extends BaseVectorLayer {
*/
this.un;
const renderMode = options.renderMode || VectorTileRenderType.HYBRID;
assert(
renderMode == VectorTileRenderType.HYBRID ||
renderMode == VectorTileRenderType.VECTOR,
28
); // `renderMode` must be `'hybrid'` or `'vector'`.
const renderMode = options.renderMode || 'hybrid';
// `renderMode` must be `'hybrid'` or `'vector'`.
assert(renderMode == 'hybrid' || renderMode == 'vector', 28);
/**
* @private
* @type {import("./VectorTileRenderType.js").default}
* @type {VectorTileRenderType}
*/
this.renderMode_ = renderMode;
@@ -184,7 +184,7 @@ class VectorTileLayer extends BaseVectorLayer {
}
/**
* @return {import("./VectorTileRenderType.js").default} The render mode.
* @return {VectorTileRenderType} The render mode.
*/
getRenderMode() {
return this.renderMode_;

View File

@@ -1,26 +0,0 @@
/**
* @module ol/layer/VectorTileRenderType
*/
/**
* @enum {string}
* Render mode for vector tiles:
* @api
*/
export default {
/**
* Polygon and line elements are rendered as images, so pixels
* are scaled during zoom animations. Point symbols and texts are accurately
* rendered as vectors and can stay upright on rotated views.
* @api
*/
HYBRID: 'hybrid',
/**
* Everything is rendered as vectors. Use this mode for improved
* performance on vector tile layers with only a few rendered features (e.g.
* for highlighting a subset of features of another layer with the same
* source).
* @api
*/
VECTOR: 'vector',
};

View File

@@ -5,7 +5,6 @@ import CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';
import CanvasExecutorGroup from '../../render/canvas/ExecutorGroup.js';
import CanvasTileLayerRenderer from './TileLayer.js';
import TileState from '../../TileState.js';
import VectorTileRenderType from '../../layer/VectorTileRenderType.js';
import ViewHint from '../../ViewHint.js';
import {
HIT_DETECT_RESOLUTION,
@@ -139,7 +138,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
if (
render &&
(hifi || Date.now() - frameState.time < 8) &&
layer.getRenderMode() !== VectorTileRenderType.VECTOR
layer.getRenderMode() !== 'vector'
) {
this.renderTileImage_(tile, frameState);
}
@@ -154,7 +153,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const layer = this.getLayer();
return (
super.isDrawableTile(tile) &&
(layer.getRenderMode() === VectorTileRenderType.VECTOR
(layer.getRenderMode() === 'vector'
? getUid(layer) in tile.executorGroups
: tile.hasContext(layer))
);
@@ -289,7 +288,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const executorGroupInstructions = builderGroup.finish();
// no need to clip when the render tile is covered by a single source tile
const replayExtent =
layer.getRenderMode() !== VectorTileRenderType.VECTOR &&
layer.getRenderMode() !== 'vector' &&
declutter &&
sourceTiles.length === 1
? null
@@ -784,7 +783,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const layer = /** @type {import("../../layer/VectorTile.js").default} */ (
this.getLayer()
);
if (layer.getRenderMode() === VectorTileRenderType.VECTOR) {
if (layer.getRenderMode() === 'vector') {
return false;
}
const replayState = tile.getReplayState(layer);

View File

@@ -11,7 +11,6 @@ import TileState from '../../../../../../src/ol/TileState.js';
import VectorRenderTile from '../../../../../../src/ol/VectorRenderTile.js';
import VectorTile from '../../../../../../src/ol/VectorTile.js';
import VectorTileLayer from '../../../../../../src/ol/layer/VectorTile.js';
import VectorTileRenderType from '../../../../../../src/ol/layer/VectorTileRenderType.js';
import VectorTileSource from '../../../../../../src/ol/source/VectorTile.js';
import View from '../../../../../../src/ol/View.js';
import XYZ from '../../../../../../src/ol/source/XYZ.js';
@@ -124,7 +123,7 @@ describe('ol/renderer/canvas/VectorTileLayer', function () {
it('does not render images for pure vector rendering', function () {
const testLayer = new VectorTileLayer({
renderMode: VectorTileRenderType.VECTOR,
renderMode: 'vector',
source: source,
style: layerStyle,
});

View File

@@ -1,7 +1,6 @@
import MVT from '../../../../src/ol/format/MVT.js';
import Map from '../../../../src/ol/Map.js';
import VectorTileLayer from '../../../../src/ol/layer/VectorTile.js';
import VectorTileRenderType from '../../../../src/ol/layer/VectorTileRenderType.js';
import VectorTileSource from '../../../../src/ol/source/VectorTile.js';
import View from '../../../../src/ol/View.js';
import {createXYZ} from '../../../../src/ol/tilegrid.js';
@@ -9,7 +8,7 @@ import {createXYZ} from '../../../../src/ol/tilegrid.js';
new Map({
layers: [
new VectorTileLayer({
renderMode: VectorTileRenderType.VECTOR,
renderMode: 'vector',
opacity: 0.1,
source: new VectorTileSource({
format: new MVT(),

View File

@@ -1,7 +1,6 @@
import MVT from '../../../../src/ol/format/MVT.js';
import Map from '../../../../src/ol/Map.js';
import VectorTileLayer from '../../../../src/ol/layer/VectorTile.js';
import VectorTileRenderType from '../../../../src/ol/layer/VectorTileRenderType.js';
import VectorTileSource from '../../../../src/ol/source/VectorTile.js';
import View from '../../../../src/ol/View.js';
import {createXYZ} from '../../../../src/ol/tilegrid.js';
@@ -9,7 +8,7 @@ import {createXYZ} from '../../../../src/ol/tilegrid.js';
new Map({
layers: [
new VectorTileLayer({
renderMode: VectorTileRenderType.VECTOR,
renderMode: 'vector',
source: new VectorTileSource({
format: new MVT(),
tileGrid: createXYZ(),