2010-01-19 248 views
2

使用OpenLayers,是否有一种简单的方法来判断地图图像是否已正确加载,可能是使用“loadend”事件?如何使用OpenLayers判断地图平铺图像是否已成功加载

我们正在阅读来自GeoServer的地图图块,并使用OpenLayers来显示它们。大多数情况下,图像显示在合理的时间内。偶尔(特别是当使用鼠标滚轮来回滚动时),“loadend”事件会像加载图像一样被触发,但不会显示任何内容。

当我调查HTML时,看起来该图像具有正确的URL,但具有粉红色的背景颜色(通常是透明的),并且在事件对象中看不到任何有用的东西。

任何想法?

回答

8

GeoServer很可能无法随时生成图块。你可以做一些调整来提高性能,所以我可能会投入一些时间来研究这一点。

从OpenLayers的角度来看,有几件简单的事情你可以做,这可能有所帮助。首先,有一个名为OpenLayers.IMAGE_RELOAD_ATTEMPTS的属性,告诉图层无法获取图像时需要重试多少次。该值默认为0(零)。我会尝试将它设置为3代码的顶部,看看是否有帮助。

OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3; 

另外,如果你拿到一个破瓦,并希望它显示为粉红色比其他的东西,你可以更新你的代码的顶部OpenLayers.Util.onImageLoadErrorColor值。

OpenLayers.Util.onImageLoadErrorColor = 'transparent'; 

您可以浏览源代码所有这一切在这里:http://trac.openlayers.org/browser/trunk/openlayers/lib/OpenLayers/Util.js

+0

谢谢你,非常有用。 IMAGE_RELOAD_ATTEMPTS已设置为5. 我注意到返回的图像上的“_attempts”属性。我假设下划线是为了表明它是一个逻辑上的私人属性。 该属性仅在实际重新加载尝试完成时定义,如果发生故障,则其图像为6.通过检查“_attempts”值是否大于IMAGE_RELOAD_ATTEMPTS,我可以发现图像失败加载。 – zod 2010-01-19 17:00:59

1

如果有就应该在HTML以下CSS类错误: 如果你想隐藏olImageLoadError

它将以下内容添加到您的样式表中:

.olImageLoadError { 
    display: none; 
} 
2

with OpenLayers 2.12所需的CSS是

.olImageLoadError 
    { 
     display: none !important; 
    }