2010-01-19 62 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; 
    } 
相關問題