在AJAX应用程序中使用Openlayers绘制点要素时,IE8中的参数错误无效

在AJAX应用程序中使用Openlayers绘制点要素时,IE8中的参数错误无效,openlayers,invalid-argument,Openlayers,Invalid Argument,我想请求一些帮助,因为我一直在努力解决一个仅在IE8中出现的代码问题。 您可以查看演示页面,该页面在上演示了该问题。正如您所注意到的,它在Firefox、Chrome、Safari中运行良好,但在IE8中,它会触发openlayers.js第684行中的Javascript错误“Invalid Argument”,字符178 本页首先初始化openlayers地图对象,并声明一个空的cityLayer矢量图层,稍后我们将使用该图层绘制点。 链接“ShowCity list”异步调用并将其插入DO

我想请求一些帮助,因为我一直在努力解决一个仅在IE8中出现的代码问题。 您可以查看演示页面,该页面在上演示了该问题。正如您所注意到的,它在Firefox、Chrome、Safari中运行良好,但在IE8中,它会触发openlayers.js第684行中的Javascript错误“Invalid Argument”,字符178

本页首先初始化openlayers地图对象,并声明一个空的cityLayer矢量图层,稍后我们将使用该图层绘制点。 链接“ShowCity list”异步调用并将其插入DOM中。 html声明了一个数组,其中存储了几个城市的名称、纬度和经度。 然后将此数组作为参数传递给showCities()函数,该函数在test.html中声明如下:

function showCities(cities,layer) {
    var pointFeatures = [] ;
    for ( i = 0 ; i < cities.length ; i++) {
        pointFeatures[i] = new OpenLayers.Feature.Vector(
            newOpenLayers.Geometry.Point(cities[i]['long'],
                cities[i]'lat']).transform(
                map.displayProjection,map.baseLayer.projection));
        pointFeatures[i].attributes = { label: cities[i]['label'] };
    }
    cityLayer.addFeatures(pointFeatures);
    return false ;
}
功能展示城市(城市,层){
var pointFeatures=[];
对于(i=0;i
在IE8中,只绘制“cities”数组中包含的第一个城市,然后浏览器抛出“Invalid Argument”错误。 你可以看看我的源代码。我想我已经把它减到最低限度了。我被困在这一点上,试图解决这个问题。 提前感谢您的帮助


Lothaire

我已经看过了,可以用公共OL构建重现错误。但是使用我自己的OL2.9.1版本,它可以在IE和FF中工作


我对下载的文件做了一些小的修改,但只是在一个弹出类中,所以这不会影响您的代码。尝试下载OpenLayers 2.9.1,看看你的应用程序是否能与该版本兼容。或者从调试版本的OL(未压缩)开始,尝试查看哪行代码产生错误。在不查看缩小的代码时更容易。:-)

谢谢大家的关注——但我很惭愧地说,我在定义我的样式图时犯了一个粗心的错误,这并没有影响除IE8之外的大多数浏览器,事实上,这是问题的原因。我一直在试着调试,看错了地方

这是我的错误:

styleMap = new OpenLayers.StyleMap({
    'default':{
        strokeColor: "#FFFFFF",
        strokeOpacity: 1,
        strokeWidth: 2,
        fillColor: "#852C71",
        fillOpacity: 1,
        pointRadius: 4,
        pointerEvents: "visiblePainted",
        label : "${label}",                   
        fontColor: "#000000",
        fontSize: "10px",
        fontFamily: "Verdana",
        fontWeight: "bold",
        labelAlign: **"${align}",**
        labelXOffset: **"${xOffset}",**
        labelYOffset: "-10"
    }
});
我在样式图中指定了两个变量(${align},${xOffset}),在向向量层添加特征时,我没有传递任何值。这导致IE崩溃,而其他浏览器忽略了它。我用一个固定值替换了这些变量,解决了IE8的问题。为我这一愚蠢的错误道歉。谢谢你的调查


Lothaire

以可下载的方式显示所有代码,这是一项了不起的工作!发生在我们所有人身上。:-)将它标记为帮助他人的答案。