如何正确删除Cesium折线

时间:2016-12-29 14:49:58

标签: javascript path push cesium

我刚刚开始使用Cesium,我一直在尝试绘制推送数据。为此,我一直在使用广告牌显示轨道,并使用折线显示历史信息。但是,在某些情况下,即使已删除实体,折线也会保留在查看器上。

为了创建/更新我调用的实体(其中track是包含特定轨道的状态信息的对象,而position是Cartesian3对象)

function updateTrack(track, position) {
    var entity = map.entities.getById(track.id);
    if (Cesium.defined(entity)) {
        entity.billboard.show = (track.curr && showTracks);
        entity.position = position;
        var heading = Math.atan2(track.vy, track.vx);
        entity.billboard.rotation = heading - Math.PI / 2;

        var polyLineposs = entity.polyline.positions._value;
        polyLineposs.push(position);
        entity.polyline.positions = polyLineposs;
        entity.polyline.show = showTrails;
    }
    else {
        var heading = Math.atan2(track.vy, track.vx);
        map.entities.add(new Cesium.Entity({
            id: track.id,
            position: position,
            parent: trackEntity_parent,
            billboard: { image: trackIconHref, scale: 0.1, rotation: (heading - Math.PI / 2), show: showTracks },
            polyline: { width: 5, material: trailMaterial, positions: [position], show: showTrails }
        }));
    }
}

删除功能如下:

function removeTracksAndTrails(oldTracks) {

    //remove any outdated tracks and trails
    for (var i = 0; i < oldTracks.length; i++) {
        var trackToRemove = map.entities.getById(oldTracks[i]);
        //trackToRemove.polyline = undefined;
        map.entities.remove(trackToRemove);
    }
}

我还在另一个post中读到了一个建议,然而,这看起来是一个复杂的解决方案,需要整合时间。建议这种方法与简单的折线相似吗?

谢谢!

更新:看起来只有在“trailMaterial”是PolylineOutlineMaterialProperty时才会出现这种情况,即当材料是Cesium.Color对象时,问题不再发生。

0 个答案:

没有答案