javascript - basemap 选择器不起作用

标签 javascript cesiumjs

我正在将代码中的默认 basemap 更改为 mapbox.streets。但它不会再从 baseLayerPicker 小部件更新 baselayer。

                var viewer = new Cesium.Viewer('cesiumContainer',{
                animation : false,
                homeButton : false,
                baseLayerPicker : true,
                infoBox : true,
                sceneModePicker : true,
                timeline : false,
                navigationInstructionsInitiallyVisible : false,
                navigationHelpButton : false,
                contextOptions: {
                    webgl:{preserveDrawingBuffer:true}
                },
                selectionIndicator : false,
            });
            var layers = viewer.imageryLayers;
            var baseLayer = layers.get(0);
            layers.remove(baseLayer);
            layers.addImageryProvider(new Cesium.MapboxImageryProvider({
                url : 'https://api.mapbox.com/v4/',
                mapId: 'mapbox.streets',
            }));

我错过了什么吗?非常感谢任何帮助。

最佳答案

在您发布的代码中,您将在查看器(以及 baseLayerPicker)构建完成后换出图像层。您需要做的是确保 baseLayerPicker 预先使用正确的选项构建,以预先选择您想要的基础层。代码如下所示:

var imageryProviders = Cesium.createDefaultImageryProviderViewModels();
var selectedImageryProviderIndex = 4;  // MapBox Street is 5th in the list.

var viewer = new Cesium.Viewer('cesiumContainer', {
    imageryProviderViewModels: imageryProviders,
    selectedImageryProviderViewModel: imageryProviders[selectedImageryProviderIndex]
});

当您运行它时,您会注意到 baseLayerPicker 从已选择的正确项目开始,并且仍然提供换出其他基础层的选项。

关于javascript - basemap 选择器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502099/

相关文章:

javascript - 在Cesium中移动KML对象而不闪烁

javascript - 极坐标到笛卡尔坐标函数未输出正确的数据

javascript - 如何在铯中获取场景变化事件?

javascript - 为什么 $.each 仅显示我的 Mustache 模板之一?

javascript - 如何获取折线图的日期标签?

javascript - Meteor 在 promise_server.js 中抛出错误?

javascript - 将同级 div 添加到 Ember Form For 输入元素

javascript - 如何通过复制/粘贴到文本区域来生成 HTML 标签

javascript - 如何让铯点随 map 旋转?

javascript - 如何将json从变量添加到Cesium查看器?