如何设置Cesium JS地图中心(坐标:纬度和经度)

11

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

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);

如何使用cesium实现此操作?

2个回答

7

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

    viewer.camera.setView({
        destination : Cesium.Cartesian3.fromDegrees(
            longitude,
            latitude,
            Cesium.Ellipsoid.WGS84.cartesianToCartographic(viewer.camera.position).height
        )
    });

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);

我们的摄像头演示中有更多的例子供您参考。
编辑 (May 2014): 由于Cesium API的变化,.getCamera()已被重命名为.camera,相机的.controller已被移除并合并到相机本身中,Extent已被重命名为Rectangle。以上代码现在反映了新的API。有关所有断言变更的完整列表,请参见CHANGES.md

如何将经纬度坐标转换为范围?我感到困惑。 - nemesisdesign
如果您只有一个经纬度对,而不是4个角落,请通过从您的点添加或减去偏移量来创建角落。 偏移量越大,相机就会更加“缩小”。 - emackey
flight = Cesium.CameraFlightPath.createAnimationCartographic(map.scene, { destination : Cesium.Cartographic.fromDegrees(coords.lng, coords.lat, coords.zoom), duration: 0 }); - nemesisdesign

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