清洁污染 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"
})
})
我希望这个合适
是否可以清理受污染的 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"
})
})
我希望这个合适