Openlayers 3:如何确保地图渲染

时间:2016-06-27 13:02:09

标签: gis openlayers-3

我必须构建箭头功能以显示速度字段。问题是我使用外部ajax函数加载Point几何,并在渲染图层之前对其进行操作以构建Linestring图层。当我需要使用getPixelFromCoordinate()方法从像素转换为地理坐标时,我出现了问题。发生这种情况,可以使用以下代码轻松复制,该代码仅在创建地图对象后调用方法立即转换坐标:

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] 有人可以解释我这是否是预期的行为和/或是否有其他方法可以做到这一点?,谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将此事件添加到图层:

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