[英]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.