Add a new ProviderViewModel to BaseLayerPicker dynamically OR add a 2nd BaseLayerPicker?

1. A concise explanation of the problem you're experiencing.
I have a working Cesium app. I have created some initial custom ProviderViewModels that I added to my viewer and have the 1st as default. All good, I can switch from one to another.

I need to be able to allow a user the ability to add dynamically a new view model and point to their own Web Map Server. I tried several things:

1) I pushed the new view model to the imageViewModel array of the viewer. But nothing changes. Its a readonly array.
2) Created a BaseLayerPicker so I have both (the original and the custom). But clicking on the custom icons does nothing. No errors thrown? And then original base layer picker quits working.

SO it is possible to add a new icon for a new map dynamically. Or if you HAD to is there a way even if complicated. Do I have to create a whole new viewer and copy the old data to it? Just trying to see if this is possible before I keep trying different things or maybe get a suggestion of a possible path to try.

2. A minimal code example. If you've found a bug, this helps us reproduce and repair it.

3. Context. Why do you need to do this? We might know a better way to accomplish your goal.

I need this because some users will be in different places. Some have internet others closed network with their own servers. So users want to dynamically point to a map server as the base world map.

4. The Cesium version you're using, your operating system and browser.
I am using Cesium 1.34 running on a Chrome browser Version 62.0.3202.94 on windows 7.

Hi there,

imageryProviderViewModels is an option for the Viewer constructor, not a property of the Viewer class, so you can also pass it directly to the viewer at the time of construction.

viewer.baseLayerPicker.viewModel returns the BaseLayerPickerViewModel instance, where you can set the imageryProviderViewModels property directly.