import * as WeatherLayers from 'weatherlayers-gl';
const files = [
{ datetime: '2021-09-01T20:00:00Z', url: '...' },
{ datetime: '2021-09-01T21:00:00Z', url: '...' },
{ datetime: '2021-09-01T22:00:00Z', url: '...' },
];
const datetimes = files.map(file => file.datetime);
let currentDatetime = datetimes[0];
const timelineControl = new WeatherLayers.TimelineControl({
datetimes: datetimes,
datetime: currentDatetime,
onPreload: datetimes => {
// preload requested data
return Promise.all(datetimes.map(datetime => {
return WeatherLayers.loadTextureData(files.find(file => file.datetime === datetime).url);
});
},
onUpdate: datetime => {
// update displayed data
currentDatetime = datetime;
update();
},
});
timelineControl.addTo(document.getElementById('controls'));
async function update() {
const startDatetime = WeatherLayers.getClosestStartDatetime(datetimes, currentDatetime);
const endDatetime = WeatherLayers.getClosestEndDatetime(datetimes, currentDatetime);
const imageWeight = WeatherLayers.getDatetimeWeight(startDatetime, endDatetime, currentDatetime);
const image = await WeatherLayers.loadTextureData(files.find(file => file.datetime === startDatetime).url);
const image2 = await WeatherLayers.loadTextureData(files.find(file => file.datetime === endDatetime).url);
// update layers
deckgl.setProps({
layers: [
new WeatherLayers.XxxLayer({
image: image,
image2: image2,
imageWeight: imageWeight,
}),
],
});
}
update();