Skip to content

Commit 73322f0

Browse files
authored
Improve style layer inheritance (#378)
1 parent 37bcaf5 commit 73322f0

8 files changed

Lines changed: 34 additions & 29 deletions

.eslintrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@
6262
// @typescript-eslint/quotes requires standard quotes rule to be turned off
6363
"quotes": "off",
6464
"@typescript-eslint/quotes": ["error", "single"],
65+
"no-redeclare": "off",
66+
"@typescript-eslint/no-redeclare": ["error"],
6567
"space-before-function-paren": "off",
6668
"template-curly-spacing": "error",
6769
"no-useless-escape": "off",

src/style/style_layer.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,22 @@ import {mat4} from 'gl-matrix';
3131

3232
const TRANSITION_SUFFIX = '-transition';
3333

34-
class StyleLayer extends Evented {
34+
// this interface is used to allow optional overload for this methods in the derived classes.
35+
interface StyleLayer {
36+
queryRadius?(bucket: Bucket): number;
37+
queryIntersectsFeature?(
38+
queryGeometry: Array<Point>,
39+
feature: VectorTileFeature,
40+
featureState: FeatureState,
41+
geometry: Array<Array<Point>>,
42+
zoom: number,
43+
transform: Transform,
44+
pixelsToTileUnits: number,
45+
pixelPosMatrix: mat4
46+
): boolean | number;
47+
}
48+
49+
abstract class StyleLayer extends Evented {
3550
id: string;
3651
metadata: unknown;
3752
type: string;
@@ -52,18 +67,6 @@ class StyleLayer extends Evented {
5267

5368
_featureFilter: FeatureFilter;
5469

55-
readonly queryRadius: (bucket: Bucket) => number;
56-
readonly queryIntersectsFeature: (
57-
queryGeometry: Array<Point>,
58-
feature: VectorTileFeature,
59-
featureState: FeatureState,
60-
geometry: Array<Array<Point>>,
61-
zoom: number,
62-
transform: Transform,
63-
pixelsToTileUnits: number,
64-
pixelPosMatrix: mat4
65-
) => boolean | number;
66-
6770
readonly onAdd: ((map: Map) => void);
6871
readonly onRemove: ((map: Map) => void);
6972

src/style/style_layer/circle_style_layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ class CircleStyleLayer extends StyleLayer {
2929
return new CircleBucket(parameters);
3030
}
3131

32-
queryRadius = (bucket: Bucket): number => {
32+
queryRadius(bucket: Bucket): number {
3333
const circleBucket: CircleBucket<CircleStyleLayer> = (bucket as any);
3434
return getMaximumPaintValue('circle-radius', this, circleBucket) +
3535
getMaximumPaintValue('circle-stroke-width', this, circleBucket) +
3636
translateDistance(this.paint.get('circle-translate'));
3737
}
3838

39-
queryIntersectsFeature = (
39+
queryIntersectsFeature(
4040
queryGeometry: Array<Point>,
4141
feature: VectorTileFeature,
4242
featureState: FeatureState,
@@ -45,7 +45,7 @@ class CircleStyleLayer extends StyleLayer {
4545
transform: Transform,
4646
pixelsToTileUnits: number,
4747
pixelPosMatrix: mat4
48-
): boolean => {
48+
): boolean {
4949
const translatedPolygon = translate(queryGeometry,
5050
this.paint.get('circle-translate'),
5151
this.paint.get('circle-translate-anchor'),

src/style/style_layer/fill_extrusion_style_layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ class FillExtrusionStyleLayer extends StyleLayer {
2828
return new FillExtrusionBucket(parameters);
2929
}
3030

31-
queryRadius = (): number => {
31+
queryRadius(): number {
3232
return translateDistance(this.paint.get('fill-extrusion-translate'));
3333
}
3434

3535
is3D(): boolean {
3636
return true;
3737
}
3838

39-
queryIntersectsFeature = (
39+
queryIntersectsFeature(
4040
queryGeometry: Array<Point>,
4141
feature: VectorTileFeature,
4242
featureState: FeatureState,
@@ -45,7 +45,7 @@ class FillExtrusionStyleLayer extends StyleLayer {
4545
transform: Transform,
4646
pixelsToTileUnits: number,
4747
pixelPosMatrix: mat4
48-
): boolean | number => {
48+
): boolean | number {
4949

5050
const translatedPolygon = translate(queryGeometry,
5151
this.paint.get('fill-extrusion-translate'),

src/style/style_layer/fill_style_layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@ class FillStyleLayer extends StyleLayer {
3939
return new FillBucket(parameters);
4040
}
4141

42-
queryRadius = (): number => {
42+
queryRadius(): number {
4343
return translateDistance(this.paint.get('fill-translate'));
4444
}
4545

46-
queryIntersectsFeature = (
46+
queryIntersectsFeature(
4747
queryGeometry: Array<Point>,
4848
feature: VectorTileFeature,
4949
featureState: FeatureState,
5050
geometry: Array<Array<Point>>,
5151
zoom: number,
5252
transform: Transform,
5353
pixelsToTileUnits: number
54-
): boolean => {
54+
): boolean {
5555
const translatedPolygon = translate(queryGeometry,
5656
this.paint.get('fill-translate'),
5757
this.paint.get('fill-translate-anchor'),

src/style/style_layer/heatmap_style_layer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ class HeatmapStyleLayer extends StyleLayer {
5555
}
5656
}
5757

58-
queryRadius = (): number => {
58+
queryRadius(): number {
5959
return 0;
6060
}
6161

62-
queryIntersectsFeature = (): boolean => {
62+
queryIntersectsFeature(): boolean {
6363
return false;
6464
}
6565

src/style/style_layer/line_style_layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class LineStyleLayer extends StyleLayer {
7777
return new LineBucket(parameters);
7878
}
7979

80-
queryRadius = (bucket: Bucket): number => {
80+
queryRadius(bucket: Bucket): number {
8181
const lineBucket: LineBucket = (bucket as any);
8282
const width = getLineWidth(
8383
getMaximumPaintValue('line-width', this, lineBucket),
@@ -86,15 +86,15 @@ class LineStyleLayer extends StyleLayer {
8686
return width / 2 + Math.abs(offset) + translateDistance(this.paint.get('line-translate'));
8787
}
8888

89-
queryIntersectsFeature = (
89+
queryIntersectsFeature(
9090
queryGeometry: Array<Point>,
9191
feature: VectorTileFeature,
9292
featureState: FeatureState,
9393
geometry: Array<Array<Point>>,
9494
zoom: number,
9595
transform: Transform,
9696
pixelsToTileUnits: number
97-
): boolean => {
97+
): boolean {
9898
const translatedPolygon = translate(queryGeometry,
9999
this.paint.get('line-translate'),
100100
this.paint.get('line-translate-anchor'),

src/style/style_layer/symbol_style_layer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ class SymbolStyleLayer extends StyleLayer {
105105
return new SymbolBucket(parameters);
106106
}
107107

108-
queryRadius = (): number => {
108+
queryRadius(): number {
109109
return 0;
110110
}
111111

112-
queryIntersectsFeature= (): boolean => {
112+
queryIntersectsFeature(): boolean {
113113
assert(false); // Should take a different path in FeatureIndex
114114
return false;
115115
}

0 commit comments

Comments
 (0)