Как можете да контролирате видимостта на източника на данни в Cesiumjs?

Искам да покажа множество източници на данни в програма за преглед на cesiumjs, но трябва да позволя на потребителя да избере кои от тях иска да вижда във всеки един момент. Например, ако заредя kml и czml файл, как да скрия единия и да покажа другия? Не мога да намеря начина на cesiumjs да направя това с неговия API.


person Mogrifier    schedule 21.03.2015    source източник


Отговори (2)


Актуализация през февруари 2016 г.: show флаг е предложен и може да бъдат добавени към бъдеща версия на Cesium.

Оригинален отговор:

Понастоящем няма флаг show за източника на данни, но е лесно да добавите и премахнете източника на данни от списъка с налични източници на данни и това се използва за получаване на функцията за показване/скриване.

Ето работеща демонстрация: Заредете Cesium Sandcastle Пример за Hello World и поставете следния код в лявата страна, след което натиснете Run (F8). Трябва да показва квадратче за отметка в горния ляв ъгъл с функция за показване/скриване.

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 не се извиква до първото показване. Освен това, ако даден източник на данни е бил скрит известно време, трябва да помислите в кой момент трябва да пестите памет, като унищожите източника на данни, вместо да продължите да го задържате (задействайки ново отложено зареждане, ако по-късно се покаже отново).

person emackey    schedule 23.03.2015

от сега show е свойство на източника на данни, можете да го контролирате чрез достъп до свойството в нотация с точки или скоби:

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

const src = new Cesium.CzmlDataSource();
src.show = false;
person FussinHussin    schedule 18.03.2019