2016-06-10 42 views
0

我們正在運行Open Layers 3.15。 有時我們會看到丟失或失敗的圖塊。 目前它沒有顯示任何內容(可能會讓我們的用戶感到困惑),所以我們想用一個表示「無數據」或其他內容的圖塊來替換它。 我試着拿起事件並更換瓷磚如Openlayers 3替換失敗的瓦片

  source.on('tileloaderror', function(){ 
       source.setUrl('./images/map/failureTile.png'); 
      }); 

的信號源,但問題是這樣的,而不是在1瓦這樣做,它會爲整個圖層,我們不」我想要那個。

任何人都知道我們如何才能做到這一點只是失敗的瓷磚,而不是整個層?

+0

你能告訴我們你創建了什麼樣的圖層嗎?例如。瓷磚,圖像等。作爲澄清,'source.setUrl'應該有座標的佔位符。在請求實例化的URL之前,這些佔位符會被實際值替換。 – xnakos

+0

嗨,謝謝,我正在創建一個ol.layer.Tile – Status420

回答

0

加載失敗的磁貼應該有一個不同的類(.olImageLoadError)。你可以定義一個CSS規則不顯示這些項目。

.olImageLoadError { 
    display: none !important; 
} 
+0

謝謝,但我想要做的是用我們自己的一個(這是一個寫有'沒有數據'的灰色瓦片)代替失敗的瓦片, 。當然,如果有一種方法可以通過css來實現,那也適用於我們。 – Status420

+0

該類應該放在圖像項上。你可以強制來源而不是顯示。 –

+0

我認爲這是一個openlayers 2功能,而不是一個openlayers 3,我可以說。 – Status420

0

你可以試試這個:

source.on('tileloaderror', function(event) { 
    event.tile.getImage().src = './images/map/failureTile.png'; 
}); 

您需要event參數,可以讓你失敗,這樣就可以改變平鋪的圖像瓷磚。

警告:我使用tileloadend而不是tileloaderror測試了上面的代碼,因爲我的瓷磚永遠不會失效。 :)我使用Math.random()模擬失敗率和一些隨機瓷磚被指定的圖像取代。我想不出上述代碼無法使用的原因。如果你確認它有效,我會從我的答案中刪除這個警告。我在OpenLayers 3.14.2和OSM源代碼上進行了測試。

+0

謝謝我的確嘗試過,它確實會更改網址,但不會重新加載圖像。 – Status420