如何设置默认视图位置(Cesium 1.6)

11

我想为cesium应用设置默认视图/主页位置。

我不只是想飞到那个位置一次;我想将该位置设置为默认/主页 - 这样它可以在应用的其他地方使用 - 例如在HomeButton小部件中。

我尝试了通过以下方式设置Camera.DEFAULT_VIEW_RECTANGLE(文档在此处)

var extent = Cesium.Rectangle.fromDegrees(117.940573,-29.808406,118.313421,-29.468825);

viewer.camera.DEFAULT_VIEW_RECTANGLE = extent;

但它不起作用。

为了完整起见,这是我初始化应用程序的方式:

var viewer = new Cesium.Viewer('cesiumContainer', {
        terrainProvider : new Cesium.CesiumTerrainProvider({
            url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles'
        }),
        mapProjection : new Cesium.WebMercatorProjection(),
        timeline: false,
        animation: false,
});

有什么建议吗? 如果需要任何进一步的信息,请告诉我。

2个回答

16
DEFAULT_VIEW_RECTANGLECesium.Camera上的一个静态属性。这样,您可以在构建Viewer之前分配值,然后新构建的小部件将初始化为您自定义的默认视图矩形。
修改:Camera.DEFAULT_VIEW_FACTOR也要注意。您可以将其设置为零,以使默认视图与您的矩形完全匹配。它的默认值会使您的默认视图远离您选择的矩形。
var extent = Cesium.Rectangle.fromDegrees(117.940573,-29.808406,118.313421,-29.468825);

Cesium.Camera.DEFAULT_VIEW_RECTANGLE = extent;
Cesium.Camera.DEFAULT_VIEW_FACTOR = 0;

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProvider : new Cesium.CesiumTerrainProvider({
        url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles'
    }),
    mapProjection : new Cesium.WebMercatorProjection(),
    timeline: false,
    animation: false,
    baseLayerPicker: false
});

3

覆盖主页按钮事件,例如:

 viewer.homeButton.viewModel.command.beforeExecute.addEventListener(
   function(e) {
      e.cancel = true;
      viewer.scene.camera.flyTo(homeCameraView);
   });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接