5

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

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

有没有什么好的例子,或者有人可以指出我的文档?谢谢!

4

2 回答 2

6

想通了:@emackey 通过将我指向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 )
        )
    }
});
于 2015-11-10T21:43:53.477 回答
1

这是通过将PolylineGraphics添加到您的实体之一来完成的。确保为此进行设置"followSurface": false,因为您不希望线条随着地球的曲率而弯曲。此处的选项类似于您在simple.czml中看到的选项,不同之处在于您不需要可见性间隔列表,只需"show": true在此处设置即可。

于 2015-11-10T20:19:09.767 回答