首页 > 解决方案 > 在deck.gl中触发BitmapLayer的重绘

问题描述

我有一张地图作为图像,可以通过 url 上的 API 访问。作为映射过程的一部分,此图像会不断更新,而 url 始终相同。

为了在前端显示它(反应),我使用BitmapLayer并将图像属性设置为所需的 url。它在初始化时正确呈现。

我遇到的问题是如何更新地图。我有一个在服务器上更新图像时触发的事件。触发此事件时,我会更新图层。但是图像没有更新,这实际上是有道理的,因为deck.gl 仅在更改时更新并且url没有更改......所以我尝试通过使用updateTriggers属性来解决这个问题,如下所示:

new BitmapLayer({
    id: "bitmap-layer",
    image: image_url,
    updateTriggers: {
        image: [Math.random()]
    }
})

具有在触发器更改时更新图像的想法(在触发更改事件时调用)。但是图像没有得到更新。

我还尝试在每次更改时更改图像层的id,但图像仍然没有改变。

因此,我的问题是,是否有可能在不更改 url 的情况下触发图像更新?

标签: deck.gl

解决方案


在同一 url 刷新图像的一种方法是添加唯一的缓存清除查询参数,例如:

image: image_url + "?t=" + new Date().getTime(),

推荐阅读