在IE 8中使用矢量图层初始化地图时出现异常

时间:2014-06-20 15:21:48

标签: internet-explorer openlayers-3

我试图在OpenLayers 3地图上添加一个图标,但我注意到我的代码在IE 8中不起作用。

这是我的代码:

var vectorSource = new ol.source.Vector({
    //create empty vector
});

var iconFeature = new ol.Feature({
    geometry: new ol.geom.Point(ol.proj.transform([longitude,lat], 'EPSG:4326', 'EPSG:3857')),
        name: 'Null Island ',
        population: 4000,
        rainfall: 500
    });
    vectorSource.addFeature(iconFeature);

    //create the style
    var iconStyle = new ol.style.Style({
        image: new ol.style.Icon(({
            anchor: [0.5, 46],
            anchorXUnits: 'fraction',
            anchorYUnits: 'pixels',
            opacity: 0.75,
            src: 'http://ol3js.org/en/master/examples/data/icon.png'
        }))
    });

    //add the feature vector to the layer vector, and apply a style to whole layer
    var vectorLayer = new ol.layer.Vector({
        source: vectorSource,
        style: iconStyle
    });

    map = new ol.Map({
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            }),
            vectorLayer
        ],
        view: new ol.View2D({
            center: ol.proj.transform([longitude, lat], 'EPSG:4326', 'EPSG:3857'),
            zoom: 12
        }),
        target: 'map'
    });

在地图初始化过程中我没有使用vectorlayer,但地图位于应有的位置30公里左右,并且缩放效果不能正常工作时,也不例外

例外是在未压缩的ol.js的第2421行。 goog.asserts.ENABLE_ASSERTS等于true

goog.asserts.fail = function(opt_message, var_args) {
  if(goog.asserts.ENABLE_ASSERTS) {
    throw new goog.asserts.AssertionError("Failure" + (opt_message ? ": " + opt_message : ""), Array.prototype.slice.call(arguments, 1));
  }
}; 

问题1

OpenLayers 3是否支持IE 8?

website上,他们提到他们支持功能较少的浏览器

  

承诺为所有人带来3D功能并提高性能   映射需要最新的浏览器。 OpenLayers 3.0将提供WebGL,   在功能较弱的浏览器中很好地降级。

问题2

是否有一个简单的解决方法可以避免这种异常。只要图标出现在好地方,我就不会真正关注缩放效果。

我在IE中使用F12工具进行测试,并将文档模式和用户代理字符串设置为IE 8

谢谢

1 个答案:

答案 0 :(得分:3)

阅读由主要OpenLayers开发人员编写的这个帖子http://boundlessgeo.com/2012/06/visions-for-openlayers-3/,听起来有意支持旧浏览器基于DOM的呈现。但是,阅读这一篇http://comments.gmane.org/gmane.comp.gis.openlayers.devel.ol3/952或者这一篇http://permalink.gmane.org/gmane.comp.gis.openlayers.devel.ol3/984,发布一年之后,听起来已经不再是这种情况,因为之前的IE版本不支持SVG / Canvas。

在OpenLayers 2中,IE浏览器支持旧浏览器是通过VML完成的,并且是浏览器检测代码库的唯一部分之一。我使用了OL3代码库,并没有提到VML,它会排除IE版本中任何小于9的多边形渲染。

OpenLayers 3与OpenLayer 2完全不同,开源工作主要集中在开源开发环境中的webGL渲染器和3D功能,没有无限制的资金。 OpenLayer 2将继续在未来的浏览器中运行,因为它具有大量安装和非平凡的升级路径,可能会存活一段时间。

最终,您可能会从OpenLayers邮件列表或#openlayers获得最佳答案。