这是我在openlayers中见过的最奇怪的行为。
我创建了一个jsfiddle来演示这个问题。
奇怪的行为是: 一旦我给我的图层添加crossOrigin
参数,图层就会消失,你可以在jsfiddle中尝试(需要再次启用crossOrigin
参数)。或者在下面查看:
var map = new ol.Map({
target: 'map',
layers: [
],
view: new ol.View({
projection: 'EPSG:4326',
maxZoom: 25,
center: [8.86, 54.13],
zoom: 10,
})
});
var wmsSource = new ol.source.TileWMS({
preload: Infinity,
url: 'http://service.gdi-sh.de/WMS_SH_BDDcol_KF?',
params: {
'LAYERS': 'DTK5col,DTK25col,DTK50col,DTK100col,UEK250,UEK600,UEK1500',
'TILED': true,
'STYLES': new String(''),
'FORMAT': 'image/jpeg',
'SRS': 'EPSG:4326',
'VERSION': '1.1.1'
},
serverType: 'geoserver',
//crossOrigin: 'anonymous' //<-- as soon as I enable this line, the layer dissappers
});
var wmsLayer = new ol.layer.Tile({
source: wmsSource
})
map.addLayer(wmsLayer);
我需要使用crossOrigin
参数来避免forEachLayerAtPixel()
出现另一个问题:
解决方案就是在所有的图层中添加
crossOrigin
参数,这对于我拥有的所有其他图层都有效,但对于这个图层来说,它会使图层消失。更有趣的是:如果我在火狐浏览器上打开调试并查看发送到服务器的请求。它的状态为200,并且所有图片都已成功加载(您甚至可以在网络分析中看到图片)。
所以我想知道,如果图层可以加载并且图片也在那里,是什么导致了图层的消失?只要我取消带有
crossOrigin
的行,一切就恢复正常。
titleLoadFunction()
不太熟悉。您能否向我解释得更详细一些? - Min XIEimageTile.getImage().src = src
;其中= src
是正常的瓦片url。但是,如果您正在使用代理,您需要将其更改为代理url并将正常瓷砖url作为代理参数。在javascript中设置图像源url的方法可以在此处找到:https://www.w3schools.com/jsref/prop_img_src.asp。 - Mike