簡體   English   中英

強制在OL3中渲染ImageCanvas圖層?

[英]Force render of ImageCanvas layer in OL3?

我有一個使用ImageCanvas源的圖像層。 我需要動態更改畫布表面上的內容並在圖層上進行更改,但是除非我徹底更改范圍(例如通過縮放),否則圖層將忽略我對畫布所做的任何更改。

有什么方法可以強制給定的圖層渲染? 我試過了map.render() ,它在某些情況下可以工作,但在其他情況下卻不能

MapScholar.prototype.CreateCanvasLayer = function()                     
{        
    this.canvasLayer = new ol.layer.Image( {                                    
        source: new ol.source.ImageCanvas( {                                
            canvasFunction: function(extent, res, pixelRatio, size, proj) { 
                if (!this.canvas)                                       
                    this.canvas=document.createElement('canvas');       
                this.canvas.setAttribute('width', size[0]);             
                this.canvas.setAttribute('height', size[1]);            
                return this.canvas;                                     
                } 
            })
        });
    map.addLayer(this.canvasLayer);                                         
}

您可以表明,事情已經通過調用源改變changed該源上。 在您的情況下:

this.canvasLayer.getSource().changed();

呼叫changed基本無效在當前畫布ImageCanvas源,並觸發change地圖的情況下,這將導致重新繪制。

請注意, changed功能未標記為“穩定”,因此將來可能會更改。 您必須取消選中API文檔中的“僅穩定”復選框才能看到該功能。 這是直接鏈接: http : //openlayers.org/en/master/apidoc/ol.Observable.html?unstable=true

編輯: changed函數是v3.0.0版本中的名稱dispatchChangeEvent 在master分支中已changed

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM