如何通过几何图形以平滑过渡来更新标记位置?

时间:2019-02-27 15:25:31

标签: reactjs openlayers openlayers-5

我目前正在使用ReactJS + Nodejs应用程序,试图集成OpenLayers。我需要的是实时更改标记的GPS位置(通过socket.io)。

到目前为止,我想出了以下代码:

def check(the_list, *match):
    return all(a in the_list for a in match)
if check(list1, match1, match2, match3):
    return True

标记会移动,但是过渡会立即发生。有没有办法让它像“ CSS线性过渡”那样运动以使其看起来更逼真?

1 个答案:

答案 0 :(得分:1)

使用计时器,您可以按照新旧位置之间的直线将移动分为几步,例如持续100个10毫秒的步幅

var line = new LineString([oldCoordinates, newCoordinates])];
var step = 0;
var key = setInterval( function() {
  if (step < 100) {
    step++;
    marker.setGeometry(new Point(line.getCoordinateAt(step/100)));
  } else {
    clearInterval(key);
  }
}, 10);

您也许还可以基于飞行动画示例https://openlayers.org/en/latest/examples/flight-animation.html