Canvas 对于OpenLayer3,Internet Explorer 11不显示基于svg的层
在使用Internet Explorer 11(边缘模式)的图层中显示svg图像时遇到问题。该层显示在铬和FF上。在同一张地图中,我可以看到另一个图层(一个简单的Canvas 对于OpenLayer3,Internet Explorer 11不显示基于svg的层,canvas,internet-explorer-11,openlayers-3,Canvas,Internet Explorer 11,Openlayers 3,在使用Internet Explorer 11(边缘模式)的图层中显示svg图像时遇到问题。该层显示在铬和FF上。在同一张地图中,我可以看到另一个图层(一个简单的ol.geom.Polygon从一个区段动态创建)时,地图本身似乎工作正常 下面的代码显示了问题。它来自OpenLayers网站。我基本上只是更改了数据URI编码svg图像的图像源: //地图视图始终需要投影。这里我们只想映射图像 //坐标直接映射到地图坐标,所以我们创建一个使用 //以像素为单位的图像范围。 变量范围=[0,0,10
ol.geom.Polygon
从一个区段动态创建)时,地图本身似乎工作正常
下面的代码显示了问题。它来自OpenLayers网站。我基本上只是更改了数据URI编码svg图像的图像源:
//地图视图始终需要投影。这里我们只想映射图像
//坐标直接映射到地图坐标,所以我们创建一个使用
//以像素为单位的图像范围。
变量范围=[0,0,1024,968];
var投影=新的ol.proj.projection({
代码:“xkcd图像”,
单位:'像素',
范围:范围
});
var map=新ol.map({
图层:[
新ol.layer.Image({
来源:new ol.source.ImageStatic({
归因:[
新ol.归属({
html:“©;”
})
],
数据:数据:数据:图像/svg+xml;Bas64,PD94BBWWBBBWWBBBBBBBBBBBBBBBBBBBBBBBZZGVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWMC9ZDMCIIHHTBG5ZPSJODHRWOI8VD3D3LNCZylM9YMDAWL3N2ZYIGDMVYC2LVBJ0IMS4XIIBPZD0IC3ZNIGD2LKDG9IjWmJQighlawd0IyO4IiIiB2AWV3QM94psiWidAgmtainca5NjGIPGOGIdXRhZGF0YSBPZD0IbWV0YWV0RhDxMCI+CiagiCA8CMrMomJ4KIAGIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgR0CDOVL3B1CMWUB3JNL2RJL2RJBWL0EXBLL1N0AWXSSW1HZ2UIC8+CiagicagGrJonrpdgxlpJVZGM6DGL0BGU+CiagicagIdWy2M6V29YAZ4KICAGIDWVcMrMolJerJ4KICA8L21LdGFkyxRhpgogidxKzWzZZZIgLzLzLzLzLzLzLzU8Y2Y2IgIdIdIjIbjIjIbjIbjIdIdIdIdZNzNzNzN8IdIdIdIdIdIdIdIdIdIzNzZZZZN8+ZNzNzNzNzNzNzNz,
投影:投影,
imageExtent:范围
})
})
],
目标:“地图”,
视图:新ol.view({
投影:投影,
中心:ol.extent.getCenter(范围),
缩放:0
})
});代码>
IE11有一个使其在svg图像上将宽度和高度设置为0的参数
幸运的是,ol.source.ImageStatic
有一个imageSize
构造函数选项。因此,您必须提前知道图像的宽度和高度,并添加
imageSize: [width, height]
到您的ol.source.ImageStatic
配置。IE11确实有一个svg图像错误,正如ahocevar指出的那样
我找到的解决方案是在谢谢@ahocevar上设置高度
/宽度
,但它不起作用。但这确实让我走上了正确的方向。
source: new ol.source.ImageStatic({
attributions: [
new ol.Attribution({
html: '© <a href="http://xkcd.com/license.html">xkcd</a>'
})
],
url: 'image.svg',
imageLoadFunction: function(staticImage, src){
var image = staticImage.getImage();
image.width = 1000;
image.height = 900;
// Now load the svg
image.src = src;
},
projection: projection,
imageExtent: extent
})