У меня проблема при попытке экспортировать карту с несколькими уровнями, созданными с помощью OpenLayer.
Это мой JS код:OpenLayers: «Не удалось выполнить« toDataURL »в« HTMLCanvasElement »
map.once('postcompose', function(event) {
var img = new Image,
canvas = event.context.canvas;
img.crossOrigin = "anonymous";
img.src = canvas.toDataURL('image/png');
});
Где карта является переменной JavaScript моей OpenLayers карты.
Когда карта состоит из более чем на один уровень, я получаю такую ошибку:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported
Если попробовать сделать то же самое, без добавления уровня на карту (только с помощью карты OpenLayer по умолчанию) Я могу создать URL-адрес данных и загрузить карту в формате png.
Это проблема CrossOrigin, но COR должны быть включены на моем сервере.
Любая помощь? Благодаря!
EDIT
Здесь приведен пример кода JS, где я добавить слой на карту, что является причиной этой проблемы.
var layer = new ol.layer.Image({
source: new ol.source.ImageWMS({
url: 'http://pubblicazioni.provincia.fi.it/geoserver/wms',
params: {
'LAYERS': 'layer_name',
'FORMAT': 'image/png',
'TRANSPARENT': 'true'
},
crossOrigin: null
})
});
map.addLayer(layer);
Вы пробовали настройки 'crossOrigin:«» 'на источник вашей плитке слоя (как в этом [например] (HTTP : //openlayers.org/en/master/examples/icon.html))? – tsauerwein
Я попытался установить crossOrigin: «Анонимный», но в этом случае я не смог загрузить слой на карте из-за ошибки безопасности. Я попробую с вашим предложением. – neoben
Когда я использую 'crossOrigin: ''', я получаю такую ошибку: 'Image from origin 'http://pubblicazioni.provincia.fi.it' был заблокирован от загрузки по принципу совместного использования ресурсов Cross-Origin: Заголовок Access-Control-Allow-Origin присутствует на запрошенном ресурсе. Origin 'http: //188.166.72.87 ', следовательно, не допускается доступ. ' – neoben