Обновление слоев deck.gl в Angular2 +

Я пытаюсь обновить слой deck.gl в Angular на основе данных, переданных в качестве аргумента, но он не работает, слой не меняется. updateTriggers - это просто функция "только реагировать"? Если нет, то что я делаю не так? Может кто-нибудь мне помочь?

updateLayer(minTime: number, maxTime: number): void {
    const layer = new ArcLayer({
      id: 'arcs',
      data: COORDINATES,
      dataTransform: d => d.filter(f => f.time >= minTime && f.time <= maxTime),
      ...
      updateTriggers: {
        dataTransform: [minTime, maxTime]
      }
    });

    this.deck.setProps({ layers: layer });
}

Любая помощь приветствуется :))


person user45124    schedule 21.03.2021    source источник


Ответы (1)


Я думаю, что хорошим подходом было бы использовать DataFilterExtension, проверить это.

Ваш COORDINATES также содержит time информацию, верно? Тогда вы можете применить что-то вроде:

updateLayer(minTime: number, maxTime: number): void {
  const layer = new ArcLayer({
    id: 'arcs',
    data: COORDINATES,
    filterRange: [1, 1],
    getFilterValue: f => Number(f.time >= minTime && f.time <= maxTime),
    extensions: [new deck.DataFilterExtension({ filterSize: 1 })],
    updateTriggers: {
      getFilterValue: [minTime, maxTime]
    }
  });

  this.deck.setProps({ layers: layer });
}

Вы можете просмотреть полный пример здесь, используя Scripting API.

person AdriSolid    schedule 23.03.2021