我想使用OpenLayers 3实时显示一条轨道,该轨道最后会消失,就像蜗牛踪迹一样。

仅将新坐标附加到LineString很容易。参见此example。但是API似乎不支持从行尾删除坐标。

我该怎么办?扩展LineString类是唯一的选择吗?还是应该为每个线段使用单独的功能?

更新:

我将此代码与ol-debug.js一起使用。但是get / setFlatCoordinates不会在编译版本中导出。

var flatCoordinates = geometry.getFlatCoordinates();  // not exported
if (flatCoordinates && flatCoordinates.length > 100) {
  // remove first coordinate elements from array
  flatCoordinates.splice(0, geometry.getStride());
  // call push with coordinate elements as arguments
  Array.prototype.push.apply(flatCoordinates, coordinate);
  // update coordinates calling change()
  geometry.setFlatCoordinates(geometry.getLayout(), flatCoordinates);
}
else {
  geometry.appendCoordinate(coordinate);
}

最佳答案

appendCoordinate方法是将坐标添加到LineString末尾的常见用法的快捷方式。要通过更多控制来修改几何,请使用setCoordinates设置所需的坐标。

var maxCoords = 100;
var coords = lineString.getCoordinates(); // get coordinate array
coords.unshift(newCoord); // add to beginning of array
if (coords.length > maxCoords) {
    coords.length = maxCoords;
}
lineString.setCoordinates(coords);

关于javascript - 从OpenLayers 3中的轨道动态添加和删除片段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32411953/

10-13 02:30