in src/components/map-container.js [383:439]
_renderDeckOverlay(layersToRender) {
const {
mapState,
mapStyle,
layerData,
layerOrder,
layers,
visStateActions,
mapboxApiAccessToken,
mapboxApiUrl
} = this.props;
let deckGlLayers = [];
// wait until data is ready before render data layers
if (layerData && layerData.length) {
// last layer render first
deckGlLayers = layerOrder
.slice()
.reverse()
.filter(
idx => layers[idx].overlayType === OVERLAY_TYPE.deckgl && layersToRender[layers[idx].id]
)
.reduce(this._renderLayer, []);
}
if (mapStyle.visibleLayerGroups['3d building']) {
deckGlLayers.push(
new ThreeDBuildingLayer({
id: '_keplergl_3d-building',
mapboxApiAccessToken,
mapboxApiUrl,
threeDBuildingColor: mapStyle.threeDBuildingColor,
updateTriggers: {
getFillColor: mapStyle.threeDBuildingColor
}
})
);
}
return (
<DeckGL
{...this.props.deckGlProps}
viewState={mapState}
id="default-deckgl-overlay"
layers={deckGlLayers}
onBeforeRender={this._onBeforeRender}
onHover={visStateActions.onLayerHover}
onClick={visStateActions.onLayerClick}
ref={comp => {
if (comp && comp.deck && !this._deck) {
this._deck = comp.deck;
}
}}
onWebGLInitialized={gl => this._onDeckInitialized(gl)}
/>
);
}