Change imagery provider runtime using Cesium.Widget

Hi,

I have the following code that creates a cesium widget:

var viewer = new Cesium.CesiumWidget('cesiumContainer');

Bing provider is loaded by default, as the documentation states. How can I change the provider runtime? I tried the following snippet with no luck. The old provider disappears but the globe shows only in blue.

var layers = viewer.imageryLayers;
layers.remove(layers.get(0));
layers.addImageryProvider(layer);

Please note that layer is an object that I get from Cesium.createDefaultImageryProviderViewModels collection.

Thanks

Hello,

Checkout our our Imagery Layers tutorial for how to change your default imagery and add other imagery to the globe: http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Imagery%20Layers.html&label=Showcases

Best,

Hannah

Hi Hannah,

So, as I can see the only way to change default imagery, is to create a new viewer object?

No, you can use the ImageryLayerCollection.remove function to remove an existing layer.
Here is an example how to change the default imagery layer:

var viewer = new Cesium.Viewer(‘cesiumContainer’, {
baseLayerPicker : false
});

var layers = viewer.imageryLayers;
var baseLayer = layers.get(0);
layers.remove(baseLayer);
layers.addImageryProvider(new Cesium.ArcGisMapServerImageryProvider({
url : ‘//server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer
}));

``

Best,

Hannah

That actually worked.Thank you veru much for your help!