Искам да покажа множество източници на данни в програма за преглед на cesiumjs, но трябва да позволя на потребителя да избере кои от тях иска да вижда във всеки един момент. Например, ако заредя kml и czml файл, как да скрия единия и да покажа другия? Не мога да намеря начина на cesiumjs да направя това с неговия API.
Как можете да контролирате видимостта на източника на данни в Cesiumjs?
Отговори (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
не се извиква до първото показване. Освен това, ако даден източник на данни е бил скрит известно време, трябва да помислите в кой момент трябва да пестите памет, като унищожите източника на данни, вместо да продължите да го задържате (задействайки ново отложено зареждане, ако по-късно се покаже отново).
от сега show е свойство на източника на данни, можете да го контролирате чрез достъп до свойството в нотация с точки или скоби:
https://cesiumjs.org/Cesium/Build/Documentation/CzmlDataSource.html#show
const src = new Cesium.CzmlDataSource();
src.show = false;