2016-06-27 13 views
1

速度フィールドを表示するには、矢印フィーチャーを作成する必要があります。問題は、Pointのジオメトリを外部のajax関数でロードして、レイヤーをレンダリングする前にLineestringのレイヤーを作成するように操作することです。問題は、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] 誰かが私に説明できますそれを行う別の方法は?、ありがとう!層にこのイベントを追加

+0

これが期待されています。この質問には何も残っていますか? –

+0

ありがとう!私はレンダリングの終了時にいくつかのマップイベントを聴くことに基づいて代替方法があるのだろうかと思っていました。私はmap.on( "postrender")を使って "postrender"イベントを見ていました...しかし、私が試したとき、私は失敗したかどうかはわかりませんでしたが、成功しませんでした。 – user1259970

答えて

0

試してみてください。

tileLayer.on('postcompose', function(e) { 
    if (tileLayer.getVisible()) { 
     var kk = map.getPixelFromCoordinate([0,0]); 
     console.log(kk); 
    } 
}); 
関連する問題