in src/layers/point-layer/point-layer.js [264:351]
renderLayer(opts) {
const {data, gpuFilter, objectHovered, mapState, interactionConfig} = opts;
const radiusScale = this.getRadiusScaleByZoom(mapState);
const layerProps = {
stroked: this.config.visConfig.outline,
filled: this.config.visConfig.filled,
lineWidthScale: this.config.visConfig.thickness,
radiusScale,
...(this.config.visConfig.fixedRadius ? {} : {radiusMaxPixels: 500})
};
const updateTriggers = {
getPosition: this.config.columns,
getRadius: {
sizeField: this.config.sizeField,
radiusRange: this.config.visConfig.radiusRange,
fixedRadius: this.config.visConfig.fixedRadius,
sizeScale: this.config.sizeScale
},
getFillColor: {
color: this.config.color,
colorField: this.config.colorField,
colorRange: this.config.visConfig.colorRange,
colorScale: this.config.colorScale
},
getLineColor: {
color: this.config.visConfig.strokeColor,
colorField: this.config.strokeColorField,
colorRange: this.config.visConfig.strokeColorRange,
colorScale: this.config.strokeColorScale
},
getFilterValue: gpuFilter.filterValueUpdateTriggers
};
const defaultLayerProps = this.getDefaultDeckLayerProps(opts);
const brushingProps = this.getBrushingExtensionProps(interactionConfig);
const getPixelOffset = getTextOffsetByRadius(radiusScale, data.getRadius, mapState);
const extensions = [...defaultLayerProps.extensions, brushingExtension];
const sharedProps = {
getFilterValue: data.getFilterValue,
extensions,
filterRange: defaultLayerProps.filterRange,
...brushingProps
};
return [
new ScatterplotLayer({
...defaultLayerProps,
...brushingProps,
...layerProps,
...data,
parameters: {
// circles will be flat on the map when the altitude column is not used
depthTest: this.config.columns.altitude.fieldIdx > -1
},
lineWidthUnits: 'pixels',
updateTriggers,
extensions
}),
// hover layer
...(this.isLayerHovered(objectHovered)
? [
new ScatterplotLayer({
...this.getDefaultHoverLayerProps(),
...layerProps,
data: [objectHovered.object],
getLineColor: this.config.highlightColor,
getFillColor: this.config.highlightColor,
getRadius: data.getRadius,
getPosition: data.getPosition
})
]
: []),
// text label layer
...this.renderTextLabelLayer(
{
getPosition: data.getPosition,
sharedProps,
getPixelOffset,
updateTriggers
},
opts
)
];
}