我必须构建箭头功能以显示速度字段。问题是我使用外部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]
有人可以解释我这是否是预期的行为和/或是否有其他方法可以做到这一点?,谢谢!
答案 0 :(得分:0)
尝试将此事件添加到图层:
tileLayer.on('postcompose', function(e) {
if (tileLayer.getVisible()) {
var kk = map.getPixelFromCoordinate([0,0]);
console.log(kk);
}
});