我正在使用OpenLayers 3實現地圖導出功能。OpenLayers:如何檢測地圖視圖是否完全加載?
但有一個問題:無法確定地圖視圖是完全加載還是幾個圖塊缺失。
似乎沒有這樣的API或事件。緊密的一個是tileloadstart - tileloadend對。但OpenLayers異步加載tile,並且在tile實際加載之前tileloadstart不會被觸發 - 也就是說,在tile tile隊列中排隊的tile在實際加載之前不會觸發事件。
熱我可以檢測地圖視圖是完全加載?
我正在使用OpenLayers 3實現地圖導出功能。OpenLayers:如何檢測地圖視圖是否完全加載?
但有一個問題:無法確定地圖視圖是完全加載還是幾個圖塊缺失。
似乎沒有這樣的API或事件。緊密的一個是tileloadstart - tileloadend對。但OpenLayers異步加載tile,並且在tile實際加載之前tileloadstart不會被觸發 - 也就是說,在tile tile隊列中排隊的tile在實際加載之前不會觸發事件。
熱我可以檢測地圖視圖是完全加載?
我最終成功實現了導出功能。以下是粗略的解釋。
tileloadstart
,tileloadend
,使用ol.source.on()
的ol.source
小號tileloaderror
事件處理程序,並開始管理瓦負載計數。postcompose
事件處理程序在ol.Map
使用ol.Map.once()
。ol.Map.renderSync()
。這會觸發圖塊加載,所以從現在開始如果沒有圖塊加載,這將意味着所有圖塊都已加載。postcompose
事件處理程序中,使用event.context.canvas.toDataURL()
從event.context
捕獲地圖內容,並使用event.frameState.postRenderFunctions.push()
(有點hacky)註冊postrender函數。tileload*
事件處理程序管理)。如果計數不爲零,則放棄捕獲的內容。否則,捕獲完成。tileloadend
和tileloaderror
上,如果瓦片負載計數變爲零,則從上述步驟3重試。postrender事件似乎這樣的伎倆,這樣的:從3.8.2的OpenLayers至少
map.once('postrender', function(event) {
doyourmagic();
});
作品。有關該主題的正確答案there。
您應該添加一個代碼示例。 – Geuis