如果有人对我的回答有意见,您可能处于这种情况:
1. 尝试使用 openlayers (version >= 3) 在 canvas 中获取地图截图
2. 并查看导出地图的示例
3. 使用 ol.source.XYZ 渲染地图层
答对了!
使用ol.source.XYZ.crossOrigin = 'Anonymous'来解决您的困惑。或者像下面的代码:
var baseLayer = new ol.layer.Tile({
name: 'basic',
source: new ol.source.XYZ({
url: options.baseMap.basic,
crossOrigin: "Anonymous"
})
});
在 OpenLayers6 中,ES6 有所改变。但是,代码是相似的。
import { XYZ } from 'ol/source'
import { Tile as TileLayer } from 'ol/layer'
const baseLayer = new TileLayer({
name : 'basic',
source: new XYZ({
url: 'example.tile.com/x/y/z', // your tile url
crossOrigin: 'Anonymous',
// remove this function config if the tile's src is nothing to decorate. It's usually to debug the src
tileLoadFunction: function(tile, src) {
tile.getImage().src = src
}
})
})
此外,如果在您自己的服务器中请求切片,请不要忘记在响应标头中设置access-control-allow-origin: *
或access-control-allow-origin: [your whitelist origins]
。
像这样:
更多细节,还有这个