我很难加载我的czml文件,而不是将它的内容复制到JS中的JS脚本中。我想使用文件的url加载文件,但我无法做到这一点。
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不是文件的内容,而是文件本身。有什么想法吗?
非常感谢
发布于 2021-11-10 15:01:37
编辑:在原始问题中添加了一个包含小错误的代码片段。.then子句需要一个promise,该promise由.load返回,但不由.add返回。我推荐这样的说法:
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。
本演示中的关键代码行如下:
var viewer = new Cesium.Viewer("cesiumContainer", {
shouldAnimate: true,
});
viewer.dataSources.add(
Cesium.CzmlDataSource.load("../SampleData/simple.czml")
);在这种情况下,web服务器将在列出的相对URL处提供CZML文件。
https://stackoverflow.com/questions/69912298
复制相似问题