Canvas 对于OpenLayer3,Internet Explorer 11不显示基于svg的层

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

在使用Internet Explorer 11(边缘模式)的图层中显示svg图像时遇到问题。该层显示在铬和FF上。在同一张地图中,我可以看到另一个图层(一个简单的
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: '&copy; <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
})