Updating DynamicProperty values after CZML is loaded

What is the intended methodology for updating DynamicProperties of DynamicObjects after my CZML has been loaded? Do I need to modify my parsed CZML and re-process it, or is there a way to update an object that’s already part of the DynamicObjectCollection while the scenario plays out? At the moment I’m just interested in allowing the user to show/hide things from the scene, so I just need to be able to toggle the “show” attribute of several of my billboards, labels, cones and polylines.

Updating an object directly in the DynamicObjectCollection would work, but the problem is that you lose the original information loaded from the CZML. Instead, our approach has been to use a separate DynamicObjectCollection for client-side “overrides” of various properties, and use a CompositeDynamicObjectCollection to merge together properties of objects from the original source document with the client-side objects.

We do something similar with our “LotsOfSatellites” example to toggle the show property of the labels on the satellites when they are moused over. Eventually something like this functionality will be put into Cesium itself somehow, but for now, this is how it’s implemented, with some inline comments where I attempt to explain what we’re doing:


Yes, editing the DynamicObjectCollection did work, but like you said, I lost all of my original information loaded from the CZML. Your solution seems like it will work for me, I’ll give it a try and let you know how it goes.