我试图在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
谢谢
答案 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获得最佳答案。