在OpenLayers 3中动态添加和删除轨道段

Dynamically adding and removing segments from a track in OpenLayers 3

本文关键字:删除 轨道 添加 动态 OpenLayers      更新时间:2023-09-26

我想用OpenLayers 3实时显示一个轨迹,它最终会溶解,就像蜗牛的轨迹一样。

只向LineString追加新的坐标是很容易的。请看这个例子。但是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);