获取用户选择的基础层

时间:2019-07-15 21:07:39

标签: cesium

我想获取用户在Cesium应用程序上选择的基本层。

有什么方法可以获取所选的基础层,例如Mapbox Streets或OpenStreet Map?

还是更改基础层时触发的任何事件?

感谢您的帮助。 预先感谢。

2 个答案:

答案 0 :(得分:1)

用户使用BaseLayerPicker小部件更改地形和图像。在内部,此UI小部件使用Knockout库来跟踪其viewModel的状态。您可以使用它来订阅viewModel中的更改。

这里是live demo

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

var hud = document.getElementById('toolbar');

function updateHud() {
    hud.innerHTML = 'Imagery: ' + viewer.baseLayerPicker.viewModel.selectedImagery.name +
        '<br/>Terrain: ' + viewer.baseLayerPicker.viewModel.selectedTerrain.name;

}

// First run
updateHud();

// Update when imagery changes.
Cesium.knockout.getObservable(viewer.baseLayerPicker.viewModel,
                              'selectedImagery').subscribe(updateHud);

// Update when terrain changes.
Cesium.knockout.getObservable(viewer.baseLayerPicker.viewModel,
                              'selectedTerrain').subscribe(updateHud);

答案 1 :(得分:0)

可以从ImageryLayerCollection向地图添加图层 https://cesiumjs.org/Cesium/Build/Documentation/ImageryLayerCollection.html

var layer = new ImageryLayer(imageryProvider);
layers.add(layer);

ImageryLayer中存储了不同的ImageryLayerCollection

通过获取ImageryLayerCollection的0-索引,将返回首先添加到地图的ImageryLayer。例如

对于

var collection = new Cesium.ImageryLayerCollection();

然后

var layer =  collection.get(0);