1

我正在尝试在 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?

网站上,他们提到他们支持功能较弱的浏览器

承诺为最新的浏览器带来 3D 功能和更高的性能,以满足所有映射需求。OpenLayers 3.0 将提供 WebGL,同时在功能较弱的浏览器中很好地降级。

问题2

是否有一个简单的解决方法来避免该异常。只要图标出现在合适的位置,我并不介意缩放效果。

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

谢谢

4

1 回答 1

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,一年多后发布,听起来情况不再如此,因为 9 之前的 IE 版本不支持 SVG/Canvas。

在 OpenLayers 2 中,IE 对旧浏览器的支持是通过 VML 完成的,并且是代码库中仅有的有浏览器检测功能的部分之一。我 grepped OL3 代码库并没有提到 VML,这将排除 IE 版本小于 9 中的任何多边形渲染。

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

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

于 2014-06-21T17:05:27.120 回答