在openlayers 4中等效于map.beforeRender?

时间:2018-06-25 14:01:27

标签: openlayers openlayers-3

我有OL3地图应用程序,该应用程序使用实验性map.beforeRender事件对基于GPS航向数据的自动视图旋转进行动画处理。

现在,我想升级到ol 4,我发现beforeRender函数不再存在。

map.beforeRender(function(map, frameState) {
if (frameState !== null) {
    // use sampling period to get a smooth transition
    var m = frameState.time - deltaMean * 1.5;
    m = Math.max(m, previousM);
    previousM = m;
    // interpolate position along positions LineString
    var c = positions.getCoordinateAtM(m, true);
    var view = frameState.viewState;
    if (c) {
        view.center = getCenterWithHeading(c, -c[2], view.resolution);
        view.rotation = -c[2];
        currentRotation = -c[2];
        rotateMap(radToDeg(view.rotation));
        marker.setPosition(c);
    }
}
return true; // Force animation to continue
});

那么,如果今天我升级到OL4,还有什么选择?在哪里实现此功能以旋转视图?

1 个答案:

答案 0 :(得分:1)

changelog for OL4说您应该使用view.animate()

  

已弃用的ol.animation函数和map.beforeRender()方法已被删除。请改用view.animate()

因此您可以使用以下方式旋转:

view.animate({
  rotation: view.getRotation() - Math.PI / 2,
  easing: ol.easing.easeIn
});

animation example游览按钮)还显示了如何在间隔函数中使用此功能