10

我想初始化,以便地图以某些特定坐标而不是默认坐标为中心。我有以下初始化代码:

var map = new Cesium.CesiumWidget('map-js');
map.centralBody.terrainProvider = new Cesium.CesiumTerrainProvider({
    url : 'http://cesiumjs.org/smallterrain'
});

通常,对于其他映射库,我会在初始化时设置中心,例如在 mapbox 上:

map = L.mapbox.map('map-js', 'api-key').setView([42.12, 12.45], 9);

如何用做到这一点?

4

2 回答 2

7

尝试在上面的第一个代码块之后添加它:

var scene = map.scene;
var ellipsoid = Cesium.Ellipsoid.WGS84;
var west = Cesium.Math.toRadians(-77.0);
var south = Cesium.Math.toRadians(38.0);
var east = Cesium.Math.toRadians(-72.0);
var north = Cesium.Math.toRadians(42.0);

var extent = new Cesium.Rectangle(west, south, east, north);
scene.camera.viewRectangle(extent, ellipsoid);

我们的相机演示中提供了更多示例。

编辑(2014 年 5 月):由于 Cesium API 更改,.getCamera()重命名为.camera,相机.controller被移除并滚入相机本身,Extent并重命名为Rectangle. 上面的代码现在反映了新的 API。有关重大更改的完整列表,请参阅CHANGES.md

于 2014-02-09T17:10:51.873 回答
7

如果您想保持当前的“缩放”(也就是与椭球的相机距离)并且只有 lon/lat,您可以调用setView()并使用当前的相机高度,例如:

    viewer.camera.setView({
        destination : Cesium.Cartesian3.fromDegrees(
            longitude,
            latitude,
            Cesium.Ellipsoid.WGS84.cartesianToCartographic(viewer.camera.position).height
        )
    });
于 2015-11-18T00:16:58.063 回答