首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CesiumJS中加载Czml文件

在CesiumJS中加载Czml文件
EN

Stack Overflow用户
提问于 2021-11-10 11:13:30
回答 1查看 92关注 0票数 1

我很难加载我的czml文件,而不是将它的内容复制到JS中的JS脚本中。我想使用文件的url加载文件,但我无法做到这一点。

代码语言:javascript
复制
var czml = "test_trace.czml";
var viewer = new Cesium.Viewer("cesiumContainer", {terrainProvider: Cesium.createWorldTerrain(), baseLayerPicker: false, shouldAnimate: true,});

viewer.dataSources.add(Cesium.CzmlDataSource.load(czml)).then(function (ds) {
    viewer.trackedEntity = ds.entities.getById("path");
});

其中czml不是文件的内容,而是文件本身。有什么想法吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-10 15:01:37

编辑:在原始问题中添加了一个包含小错误的代码片段。.then子句需要一个promise,该promise由.load返回,但不由.add返回。我推荐这样的说法:

代码语言:javascript
复制
Cesium.CzmlDataSource.load(czml).then(function (ds) {
    viewer.dataSources.add(ds);
    viewer.trackedEntity = ds.entities.getById("path");
});

在上面的代码中,.load返回promise,.then等待promise解析。然后将解析的dataSource添加到查看器中,并选择一个被跟踪的实体。这是一个live demo with tracking

原始答案

确保czml是包含该URL的字符串。此外,生成的DataSource需要添加到查看器中才能变得可见。检查控制台是否有错误,以查看URL是否无效或应用程序是否无法访问。

这是一个live demo

本演示中的关键代码行如下:

代码语言:javascript
复制
var viewer = new Cesium.Viewer("cesiumContainer", {
  shouldAnimate: true,
});

viewer.dataSources.add(
  Cesium.CzmlDataSource.load("../SampleData/simple.czml")
);

在这种情况下,web服务器将在列出的相对URL处提供CZML文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69912298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档