我想使用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/