使用 Cesium 渲染 gx:Track KML 数据
Render gx:Track KML data with Cesium
我正在尝试使用 GPS 设备记录的 gx:Track
数据呈现 KML 文件。我知道 Cesium 期望这种类型的数据被动画化,但我想弄清楚如何只显示整个数据集。到目前为止我有这个:
viewer.dataSources.add(Cesium.KmlDataSource.load('../track.kml',
{
camera: viewer.scene.camera,
canvas: viewer.scene.canvas,
clampToGround:true
})
);
它正确加载了数据,但只显示了开始和结束实体,因为我假设它希望我为数据设置动画,这时它会开始画一条线。我如何指示 Cesium 立即显示所有数据?
下面是数据的示例:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
<open>1</open>
<visibility>1</visibility>
<Style id="trackStyle">
<LineStyle>
<color>ffDB9034</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>80DB9034</color>
</PolyStyle>
</Style>
<Style id="pathStyle">
<LineStyle>
<color>f8000080</color>
<width>8</width>
</LineStyle>
</Style>
<Placemark>
<name>KIWI-KHPN</name>
<styleUrl>#trackStyle</styleUrl>
<gx:Track>
<altitudeMode>absolute</altitudeMode>
<extrude>1</extrude>
<gx:interpolate>1</gx:interpolate>
<when>2018-07-01T22:43:58.790Z</when>
<gx:coord>-69.71002757555777 43.96408896897357 34.341796874999964</gx:coord>
<when>2018-07-01T22:43:59.744Z</when>
<gx:coord>-69.71001986420686 43.96409190263968 10.939052581787099</gx:coord>
<when>2018-07-01T22:44:00.745Z</when>
<gx:coord>-69.70998742624158 43.96408662204068 11.535732269287097</gx:coord>
<when>2018-07-01T22:44:02.748Z</when>
我不确定这是最好的解决方案,但在 Cesium 论坛上发帖后,我得到了将时钟调快的建议。我没有试图弄清楚为每个上传的文件设置时钟向前多远,而是将它设置为一个非常高的数字,到目前为止没有任何问题。
代码如下:
viewer.dataSources.add(Cesium.KmlDataSource.load('../flight.kml', options)).then(function(dataSource){
viewer.clock.shouldAnimate = false;
viewer.clock.currentTime.secondsOfDay = 9999999999999999999999;
});
我很乐意将积分分给能提供更好解决方案的人!
我正在尝试使用 GPS 设备记录的 gx:Track
数据呈现 KML 文件。我知道 Cesium 期望这种类型的数据被动画化,但我想弄清楚如何只显示整个数据集。到目前为止我有这个:
viewer.dataSources.add(Cesium.KmlDataSource.load('../track.kml',
{
camera: viewer.scene.camera,
canvas: viewer.scene.canvas,
clampToGround:true
})
);
它正确加载了数据,但只显示了开始和结束实体,因为我假设它希望我为数据设置动画,这时它会开始画一条线。我如何指示 Cesium 立即显示所有数据?
下面是数据的示例:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
<open>1</open>
<visibility>1</visibility>
<Style id="trackStyle">
<LineStyle>
<color>ffDB9034</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>80DB9034</color>
</PolyStyle>
</Style>
<Style id="pathStyle">
<LineStyle>
<color>f8000080</color>
<width>8</width>
</LineStyle>
</Style>
<Placemark>
<name>KIWI-KHPN</name>
<styleUrl>#trackStyle</styleUrl>
<gx:Track>
<altitudeMode>absolute</altitudeMode>
<extrude>1</extrude>
<gx:interpolate>1</gx:interpolate>
<when>2018-07-01T22:43:58.790Z</when>
<gx:coord>-69.71002757555777 43.96408896897357 34.341796874999964</gx:coord>
<when>2018-07-01T22:43:59.744Z</when>
<gx:coord>-69.71001986420686 43.96409190263968 10.939052581787099</gx:coord>
<when>2018-07-01T22:44:00.745Z</when>
<gx:coord>-69.70998742624158 43.96408662204068 11.535732269287097</gx:coord>
<when>2018-07-01T22:44:02.748Z</when>
我不确定这是最好的解决方案,但在 Cesium 论坛上发帖后,我得到了将时钟调快的建议。我没有试图弄清楚为每个上传的文件设置时钟向前多远,而是将它设置为一个非常高的数字,到目前为止没有任何问题。
代码如下:
viewer.dataSources.add(Cesium.KmlDataSource.load('../flight.kml', options)).then(function(dataSource){
viewer.clock.shouldAnimate = false;
viewer.clock.currentTime.secondsOfDay = 9999999999999999999999;
});
我很乐意将积分分给能提供更好解决方案的人!