首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Cesiumjs中控制数据源的可见性?

如何在Cesiumjs中控制数据源的可见性?
EN

Stack Overflow用户
提问于 2015-03-21 23:44:11
回答 2查看 4.4K关注 0票数 6

我希望在cesiumjs查看器中显示多个数据源,但需要允许用户选择他们想要在任何给定时间查看的数据源。例如,如果我加载一个kml和一个czml文件,我如何隐藏其中一个并显示另一个?我找不到cesiumjs的API来做这件事。

EN

回答 2

Stack Overflow用户

发布于 2015-03-23 22:35:19

更新2016年2月:show标志has been proposed,可能会添加到未来版本的to中。

原始答案:

目前在dataSource上没有show标志,但是很容易在可用dataSources列表中添加和删除dataSource,这是用来获得显示/隐藏功能的。

下面是一个有效的演示:加载Cesium Sandcastle Hello World示例,并将以下代码粘贴到左侧,然后点击Run (F8)。它应该在左上角显示一个带有显示/隐藏功能的复选框。

代码语言:javascript
复制
var viewer = new Cesium.Viewer('cesiumContainer');

// Create a typical CzmlDataSource.
var dataSource1 = new Cesium.CzmlDataSource();
dataSource1.load('../../SampleData/simple.czml');

// Add a checkbox at the top.
document.getElementById('toolbar').innerHTML =
    '<label><input type="checkbox" id="showCheckbox" /> Show CZML</label>';

var checkbox = document.getElementById('showCheckbox');
checkbox.addEventListener('change', function() {
    // Checkbox state changed.
    if (checkbox.checked) {
        // Show if not shown.
        if (!viewer.dataSources.contains(dataSource1)) {
            viewer.dataSources.add(dataSource1);
        }
    } else {
        // Hide if currently shown.
        if (viewer.dataSources.contains(dataSource1)) {
            viewer.dataSources.remove(dataSource1);
        }
    }
}, false);

这段代码可以改进,例如,它可能是一个“惰性加载”,dataSource.load直到第一次显示才会被调用。此外,如果dataSource已经隐藏了一段时间,您必须考虑在什么时候应该通过销毁dataSource而不是继续持有它来节省内存(如果稍后它再次显示,则会触发新的惰性加载)。

票数 6
EN

Stack Overflow用户

发布于 2019-03-19 00:53:08

目前,show是数据源的一个属性,您可以通过访问点或括号表示法中的属性来控制它:

https://cesiumjs.org/Cesium/Build/Documentation/CzmlDataSource.html#show

代码语言:javascript
复制
const src = new Cesium.CzmlDataSource();
src.show = false;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29184613

复制
相关文章

相似问题

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