我的页面上有两个实体;一颗卫星及其“地面位置”,两者都随着时间的推移在铯中移动。我想用一条随它们移动的直线将两者连接起来。
如果您使用的是 CZML 文件, CZML Showcase似乎展示了类似的功能,但我想知道如何在代码中执行此操作。他们的演示包含卫星和地面位置之间的几条线,实际上他们更进一步,只显示不与地球相交的线(如果两个实体之间存在视线)。我不需要那么花哨的东西。
有没有什么好的例子,或者有人可以指出我的文档?谢谢!
我的页面上有两个实体;一颗卫星及其“地面位置”,两者都随着时间的推移在铯中移动。我想用一条随它们移动的直线将两者连接起来。
如果您使用的是 CZML 文件, CZML Showcase似乎展示了类似的功能,但我想知道如何在代码中执行此操作。他们的演示包含卫星和地面位置之间的几条线,实际上他们更进一步,只显示不与地球相交的线(如果两个实体之间存在视线)。我不需要那么花哨的东西。
有没有什么好的例子,或者有人可以指出我的文档?谢谢!
想通了:@emackey 通过将我指向simple.czml 的这一部分,让我走上了正确的道路。我在从 CZML 转换为 javascript 时遇到问题的部分是动态指定行的开始和结束位置的部分:
"positions":{
"references":[
"Facility/AGI#position","Satellite/ISS#position"
]
}
原来我需要的类是PositionPropertyArray和ReferenceProperty。有了这两个,我可以向我的任何一个实体添加一条动态线,如下所示:
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 )
)
}
});
这是通过将PolylineGraphics添加到您的实体之一来完成的。确保为此进行设置"followSurface": false
,因为您不希望线条随着地球的曲率而弯曲。此处的选项类似于您在simple.czml中看到的选项,不同之处在于您不需要可见性间隔列表,只需"show": true
在此处设置即可。