layer2 = {
const {ArcLayer} = deck;
class AnimatedArcLayer extends ArcLayer {
getShaders() {
const shaders = super.getShaders();
shaders.inject = {
'vs:#decl': vsDeclaration,
'vs:#main-end': vsMain,
'fs:#decl': fsDeclaration,
'fs:DECKGL_FILTER_COLOR': fsColorFilter
};
return shaders;
}
initializeState(params) {
super.initializeState(params);
this.getAttributeManager().addInstanced({
instanceFrequency: {
size: 1,
accessor: 'getFrequency',
defaultValue: 1
},
});
}
draw(opts) {
this.state.model.setUniforms({
tailLength: this.props.tailLength,
animationSpeed: this.props.animationSpeed,
timestamp: (Date.now() / 1000) % 86400
});
super.draw(opts);
this.setNeedsRedraw();
}
}
AnimatedArcLayer.layerName = 'AnimatedArcLayer';
AnimatedArcLayer.defaultProps = defaultProps;
const layer = new AnimatedArcLayer({
id: `arc-${Date.now()}`,
data,
getTargetColor: [0, 200, 255],
getSourceColor: d => [255, 200 - d.distance / 50, 0],
getFrequency: d => d.routes,
animationSpeed: 3,
tailLength: 5
});
deckgl.setProps({layers: [layer]});
return layer;
}