清洁污染 canvas

Clean tainted canvas

是否可以清理受污染的 canvas?

我有一个 Openlayers 地图,用户可以在其中添加具有 CORS 限制的图层。我无法通过我的代理配置绕过 cors 并且 crossOrigin='anonymus' 不是一个选项。

我需要的是能够删除“bad”图层并让用户生成地图图像。

所以我尝试:

但我总是遇到 cors 错误。如何在不刷新浏览器的情况下使我的地图再次变得很棒

不,没有办法清理一个被污染的canvas。
一旦被污染,它将终生被污染。

不仅如此,在第二个 canvas 上画这个 canvas 也会污染第二个 canvas。即使那个canvas已经完全清除了。

所以,对你来说唯一的方法是从一个新的 canvas 元素重新开始,并在绘制之前过滤掉坏层。

添加层的源中有一个属性 crossOrigin,所以你可以给它赋值crossOrigin: "Anonymous",如下例

var basemap = new ol.layer.Tile({
        source: new ol.source.TileArcGISRest({
            ratio: 1,
            params: {},
            crossOrigin: "Anonymous",
            url: "http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
        })
   })

我希望这个合适