Cesium: как использовать LookAt для просмотра набора координат в режиме Columbus View?

Как я могу использовать LookAt для просмотра набора координат в Columbus View? Этот метод работает в режиме 3D или в виде земного шара, но в режиме Колумба координаты не должны преобразовываться правильно, потому что он должен отправить меня в Соединенные Штаты, но на самом деле он отправляет меня на побережье Африки. Как я могу заставить его работать в представлении Колумба?

проблему можно воссоздать здесь https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html

var viewer = new Cesium.Viewer('cesiumContainer', {
        sceneMode: Cesium.SceneMode.COLUMBUS_VIEW,
//Hide the base layer picker
baseLayerPicker : false,
//Use BingMaps
imageryProvider : new Cesium.BingMapsImageryProvider({
        url: '//dev.virtualearth.net',
        mapStyle: Cesium.BingMapsStyle.ROAD
    })
    });
var scene = viewer.scene;
Sandcastle.addDefaultToolbarButton('test', function() {
var center = Cesium.Cartesian3.fromDegrees(-111, 41);
var transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);

// View in east-north-up frame
var camera = scene.camera;
Cesium.Matrix4.clone(transform, camera.transform);
camera.constrainedAxis = Cesium.Cartesian3.UNIT_Z;

// Zoom in
camera.lookAt(
    new Cesium.Cartesian3(-120000.0, -120000.0, 120000.0),
    Cesium.Cartesian3.ZERO,
    Cesium.Cartesian3.UNIT_Z);
});

Фиксированный вид работает, но тогда мой вид исправлен:

var viewer = new Cesium.Viewer('cesiumContainer', {
        sceneMode: Cesium.SceneMode.COLUMBUS_VIEW,
//Hide the base layer picker
baseLayerPicker : false,
//Use BingMaps
imageryProvider : new Cesium.BingMapsImageryProvider({
        url: '//dev.virtualearth.net',
        mapStyle: Cesium.BingMapsStyle.ROAD
    })
    });
var scene = viewer.scene;
Sandcastle.addDefaultToolbarButton('test', function() {
var center = Cesium.Cartesian3.fromDegrees(-111, 41);
var transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);

// View in east-north-up frame
var camera = scene.camera;
Cesium.Matrix4.clone(transform, camera.transform);
camera.constrainedAxis = Cesium.Cartesian3.UNIT_Z;

// Zoom in
camera.lookAt(
    new Cesium.Cartesian3(-120000.0, -120000.0, 120000.0),
    Cesium.Cartesian3.ZERO,
    Cesium.Cartesian3.UNIT_Z);
});

person longlostbro    schedule 05.08.2014    source источник


Ответы (1)


Это похоже на ошибку. Я отправил задачу здесь. Пока что вы можете попробовать использовать Camera.flyTo с длительностью 0.

person Matthew Amato    schedule 06.08.2014