Skip to content

Commit

Permalink
fix: added crossOrigin option (origo-map#1696)
Browse files Browse the repository at this point in the history
* Added crossOrigin option

* Get actual crossOrigin from source
  • Loading branch information
tonnyandersson committed Mar 2, 2023
1 parent 5331fd3 commit 2cf9053
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 9 deletions.
4 changes: 3 additions & 1 deletion src/controls/print/print-resize.js
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,9 @@ export default function PrintResize(options = {}) {

const newSource = new ImageWMS(({
url: `${source.getUrl()}/export?`,
crossOrigin: 'anonymous',
// No other way to access source/layer crossOrigin parameter
// eslint-disable-next-line no-underscore-dangle
crossOrigin: source.crossOrigin_ || 'anonymous',
projection,
ratio: 1,
params: {
Expand Down
1 change: 1 addition & 0 deletions src/layer/agsmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const agsMap = function agsMap(layerOptions, viewer) {
};
const layerSettings = { ...layerDefault, ...layerOptions };
const sourceSettings = { ...sourceDefault, ...viewer.getSource(layerOptions.source) };
sourceSettings.crossOrigin = layerSettings.crossOrigin ? layerSettings.crossOrigin : sourceSettings.crossOrigin;
sourceSettings.params = layerSettings.params || {};
sourceSettings.params.layers = `show:${layerSettings.id}`;

Expand Down
7 changes: 5 additions & 2 deletions src/layer/agstile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function createSource(options) {
return new TileArcGISRest({
attributions: options.attribution,
projection: options.projection,
crossOrigin: 'anonymous',
crossOrigin: options.crossOrigin,
params: options.params,
url: options.url,
tileGrid: options.tileGrid
Expand All @@ -18,10 +18,13 @@ const agsTile = function agsTile(layerOptions, viewer) {
layerType: 'tile',
featureinfoLayer: undefined
};
const sourceDefault = {};
const sourceDefault = {
crossOrigin: 'anonymous'
};
const agsOptions = Object.assign(agsDefault, layerOptions);
const sourceOptions = Object.assign(sourceDefault, viewer.getMapSource()[layerOptions.source]);
sourceOptions.attribution = agsOptions.attribution;
sourceOptions.crossOrigin = agsOptions.crossOrigin ? agsOptions.crossOrigin : sourceOptions.crossOrigin;
sourceOptions.projection = viewer.getProjection();
sourceOptions.params = agsOptions.params || {};
sourceOptions.params.layers = `show:${agsOptions.id}`;
Expand Down
4 changes: 3 additions & 1 deletion src/layer/wms.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ function createTileSource(options) {
attributions: options.attribution,
url: options.url,
gutter: options.gutter,
crossOrigin: 'anonymous',
crossOrigin: options.crossOrigin,
projection: options.projection,
tileGrid: options.tileGrid,
params: {
Expand Down Expand Up @@ -90,6 +90,7 @@ const wms = function wms(layerOptions, viewer) {
featureinfoLayer: null
};
const sourceDefault = {
crossOrigin: 'anonymous',
version: '1.1.1',
gutter: 0,
format: 'image/png'
Expand All @@ -99,6 +100,7 @@ const wms = function wms(layerOptions, viewer) {
wmsOptions.name.split(':').pop();
const sourceOptions = Object.assign(sourceDefault, viewer.getMapSource()[layerOptions.source]);
sourceOptions.attribution = wmsOptions.attribution;
sourceOptions.crossOrigin = wmsOptions.crossOrigin ? wmsOptions.crossOrigin : sourceOptions.crossOrigin;
sourceOptions.projection = viewer.getProjection();
sourceOptions.id = wmsOptions.id;
sourceOptions.format = wmsOptions.format ? wmsOptions.format : sourceOptions.format;
Expand Down
8 changes: 5 additions & 3 deletions src/layer/wmts.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import tile from './tile';

function createSource(options) {
return new WMTSSource({
crossOrigin: 'anonymous',
crossOrigin: options.crossOrigin,
attributions: options.attribution,
url: options.url,
projection: options.projectionCode,
Expand All @@ -28,8 +28,9 @@ const wmts = function wmts(layerOptions, viewer) {
featureinfoLayer: undefined
};
const sourceDefault = {
matrixSet: viewer.getProjectionCode(),
matrixIdsPrefix: `${viewer.getProjectionCode()}:`,
crossOrigin: 'anonymous',
matrixSet: layerOptions.matrixSet || viewer.getProjectionCode(),
matrixIdsPrefix: layerOptions.matrixIdsPrefix === false ? '' : `${viewer.getProjectionCode()}:`,
format: 'image/png',
resolutions: JSON.parse(JSON.stringify(viewer.getResolutions())),
tileSize: [256, 256]
Expand All @@ -42,6 +43,7 @@ const wmts = function wmts(layerOptions, viewer) {
sourceOptions.format = wmtsOptions.format;
}
sourceOptions.attribution = wmtsOptions.attribution;
sourceOptions.crossOrigin = wmtsOptions.crossOrigin ? wmtsOptions.crossOrigin : sourceOptions.crossOrigin;
sourceOptions.projectionCode = viewer.getProjectionCode();
sourceOptions.matrixIds = [];
sourceOptions.resolutions.forEach((resolution, i) => {
Expand Down
8 changes: 6 additions & 2 deletions src/layer/xyz.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ const xyz = function xyz(layerOptions, viewer) {
layerType: 'tile',
featureinfoLayer: undefined
};
const sourceDefault = { url: '' };
const sourceDefault = {
crossOrigin: 'anonymous',
url: ''
};
const xyzOptions = Object.assign(xyzDefault, layerOptions);
xyzOptions.sourceName = xyzOptions.id;
const sourceOptions = Object.assign(sourceDefault, viewer.getMapSource()[layerOptions.source]);
sourceOptions.attributions = xyzOptions.attribution;
sourceOptions.crossOrigin = xyzOptions.crossOrigin ? xyzOptions.crossOrigin : sourceOptions.crossOrigin;
sourceOptions.projection = viewer.getProjectionCode() || 'EPSG:3857';

if (xyzOptions.tileGrid) {
Expand All @@ -33,7 +37,7 @@ const xyz = function xyz(layerOptions, viewer) {
if (xyzOptions.layerURL) {
sourceOptions.url += xyzOptions.layerURL;
}
sourceOptions.crossOrigin = 'anonymous';

const xyzSource = createSource(sourceOptions);
return tile(xyzOptions, xyzSource, viewer);
};
Expand Down

0 comments on commit 2cf9053

Please sign in to comment.