1
我必須建立箭頭功能來顯示速度場。問題是我使用外部ajax函數加載點幾何圖形,並在渲染圖層之前操作它以構建一個Linestring圖層。當我需要使用getPixelFromCoordinate()
方法將像素轉換爲地理座標時,出現了這個問題。出現這種情況,可以用下面的代碼,只有調用該方法的地圖對象創建之後inmediately變換座標很容易地複製:Openlayers 3:如何確保地圖渲染
function init() {
var map = new ol.Map({
layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ],
target: 'map',
view: new ol.View({center: [0, 0], zoom: 2 })
});
var kk = map.getPixelFromCoordinate([0,0]);
console.log(kk);
}
返回值是null
。但是如果我打電話改造前強制地圖渲染,輸出是正確的
map.renderSync();
var kk = map.getPixelFromCoordinate([0,0]);
console.log(kk);
在這種情況下,輸出是正確的:[500, 235]
有人能解釋我,如果這是一個預期的行爲和/或如果有一個替代方法呢?,謝謝!
這是預期。它在這個問題上還有什麼? –
謝謝!我想知道是否有另一種方式,基於在渲染結束時偵聽一些地圖事件。我正在用map.on('postrender')查看「postrender」事件......但是當我嘗試時,我沒有成功,但我不確定是否犯了一個錯誤。 – user1259970