如何在CesiumJS中的两个实体之间创建移动线?

时间:2015-11-10 19:19:12

标签: cesium czml

我的页面上有两个实体;一颗卫星及其地面位置"两者都随着时间的推移在Cesium中移动。我想用一条与它们一起移动的直线连接两者。

如果你正在使用CZML文件,CZML Showcase似乎表现出类似的功能,但我想知道如何在代码中执行此操作。他们的演示包含卫星和地面位置之间的几条线,实际上它们更进了一步,只显示了它与地球相交的线(如果两个实体之间存在视线)。我不需要任何有趣的东西。

有没有这方面的好例子,或有人可以指出的文档?谢谢!

2 个答案:

答案 0 :(得分:6)

想出来:@emackey指着我this section of simple.czml让我走上正轨。我在从CZML转换为javascript时遇到问题的部分是这一部分,它动态地指定了行的开始和结束位置:

"positions":{
  "references":[
    "Facility/AGI#position","Satellite/ISS#position"
  ]
}

事实证明,我需要的课程是PositionPropertyArrayReferenceProperty。有了这两个,我可以为我的任一实体添加动态线,如下所示:

var groundTrackEntity = cesiumViewer.entities.add({
    id: "groundTrackEntity",
    position: groundTrackPosition,
    point: /* ... */,
    path: /* ... */,
    polyline: {
        followSurface: false,
        positions: new Cesium.PositionPropertyArray([
            new Cesium.ReferenceProperty(
                cesiumViewer.entities,
                'orbitEntity',
                [ 'position' ]
            ),
            new Cesium.ReferenceProperty(
                cesiumViewer.entities,
                'groundTrackEntity',
                [ 'position' ]
            )
        ]),
        material: new Cesium.ColorMaterialProperty(
            Cesium.Color.YELLOW.withAlpha( 0.25 )
        )
    }
});

答案 1 :(得分:1)

这是通过将PolylineGraphics添加到您的某个实体来完成的。请务必为此设置"followSurface": false,因为您不希望线条与地球的曲率一起弯曲。此处的选项与您在simple.czml中看到的内容类似,但您不需要可见区间列表,只需在此处设置"show": true