2015-09-05 54 views
1

我想用OpenLayers 3實時顯示軌道,OpenLayers 3最終會崩潰,就像蝸牛軌跡一樣。在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); 
} 

回答

1

appendCoordinate方法是添加座標線段形式的端部的相當常見的情況的快捷方式。要通過更多控制來修改幾何圖形,請使用setCoordinates設置所需的座標。

+0

謝謝。我忽略了這個選項,因爲我想避免重新渲染整條線。但我想這也是一個簡單的追加。 –

+1

是的。無論何時修改幾何體,都會重新簡化(ol3繪製幾何體的簡化版本)並重新渲染。此外,任何更改事件偵聽器都將被觸發。這與您是否使用appendCoordinate或setCoordinates無關。使用getCoordinates和setCoordinates代替直接修改的開銷是臨時座標數組的額外內存以及從內部座標表示形式膨脹/收縮的cpu週期。 –

+0

再次感謝。 「簡化」是否也意味着零距離(無移動)的線段被刪除?我現在過濾新座標,指向與前一個位置相同的位置。 –