Skip to content

Commit c4e6e4f

Browse files
committed
CARTO: Default to PointLabelLayer in VectorTileLayer (#9524)
1 parent ddda551 commit c4e6e4f

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

modules/carto/src/api/parse-map.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@ import {
1717
negateAccessor,
1818
getMaxMarkerSize
1919
} from './layer-map';
20-
import PointLabelLayer from '../layers/point-label-layer';
21-
import {CollisionFilterExtension} from '@deck.gl/extensions';
2220
import {assert} from '../utils';
2321
import {KeplerMapConfig, MapDataset, MapLayerConfig, VisualChannels} from './types';
2422

25-
const collisionFilterExtension = new CollisionFilterExtension();
26-
2723
export type ParseMapResult = {
2824
/** Map id. */
2925
id: string;
@@ -343,8 +339,9 @@ function createChannelProps(
343339
result._subLayerProps = {
344340
...result._subLayerProps,
345341
'points-text': {
346-
type: PointLabelLayer,
347-
extensions: [collisionFilterExtension],
342+
// The following props are injected by default by VectorTileLayer:
343+
// type: PointLabelLayer,
344+
// extensions: [new CollisionFilterExtension()],
348345
collisionEnabled: true,
349346
collisionGroup,
350347

modules/carto/src/layers/vector-tile-layer.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import CartoVectorTileLoader from './schema/carto-vector-tile-loader';
88
registerLoaders([CartoPropertiesTileLoader, CartoVectorTileLoader]);
99

1010
import {DefaultProps} from '@deck.gl/core';
11-
import {ClipExtension} from '@deck.gl/extensions';
11+
import {ClipExtension, CollisionFilterExtension} from '@deck.gl/extensions';
1212
import {
1313
MVTLayer,
1414
MVTLayerProps,
@@ -22,6 +22,7 @@ import {GeoJsonLayer} from '@deck.gl/layers';
2222
import type {TilejsonResult} from '@carto/api-client';
2323
import {TilejsonPropType, injectAccessToken, mergeBoundaryData} from './utils';
2424
import {DEFAULT_TILE_SIZE} from '../constants';
25+
import PointLabelLayer from './point-label-layer';
2526

2627
const defaultProps: DefaultProps<VectorTileLayerProps> = {
2728
...MVTLayer.defaultProps,
@@ -153,12 +154,25 @@ export default class VectorTileLayer<
153154
};
154155
};
155156

157+
const defaultToPointLabelLayer = {
158+
'points-text': {
159+
type: PointLabelLayer,
160+
...props?._subLayerProps?.['points-text'],
161+
extensions: [
162+
new CollisionFilterExtension(),
163+
...(props.extensions || []),
164+
...(props?._subLayerProps?.['points-text']?.extensions || [])
165+
]
166+
}
167+
};
168+
156169
const subLayerProps = {
157170
...props,
158171
autoHighlight: false,
159172
// Do not perform clipping on points (#9059)
160173
_subLayerProps: {
161174
...props._subLayerProps,
175+
...defaultToPointLabelLayer,
162176
...applyClipExtensionToSublayerProps('polygons-fill'),
163177
...applyClipExtensionToSublayerProps('polygons-stroke'),
164178
...applyClipExtensionToSublayerProps('linestrings')

0 commit comments

Comments
 (0)