Cesium JS飞到camera.lookAt(从Google Earth Plugin API lookAt迁移)

时间:2016-12-12 15:34:28

标签: google-maps kml google-earth-plugin cesium

需要一些帮助将我的飞行功能从Google地球插件迁移到Cesium。基本上在ge中我创建了一个lookAt,并在下面调用了setAbstractView

import

这是我的Google地球插件代码。在迁移指南之后的铯中我做了:

var ge = google.earth.createInstance('map3d')
var lookAt = TVV.mapObject.createLookAt('');
lookAt.set(
    21.2765107698755,
    -157.825362273258,
    0,
    ge.ALTITUDE_RELATIVE_TO_GROUND,
    20.1690873648706,
    74.9605580474674,
    764.534479411941
);
ge.getView().setAbstractView(lookAt);

该代码几乎到了正确的位置。我必须向下拖动到右边才能看到我之前设置的地标(因此视图与Google地球中的视图不完全相同)。

所以我尝试了这个代码,我也找到了。

// fly to code that works with cesium (but a little bit off)
viewer.camera.flyTo({
    destination : Cesium.Cartesian3.fromDegrees(-157.825362273258, 21.2765107698755, 764.534479411941),
    orientation : {
        heading : Cesium.Math.toRadians(20.1690873648706),
        pitch : Cesium.Math.toRadians(74.9605580474674 - 90.0),
        roll: 0
    }
})

该代码看起来更接近之前的Google地球插件视图。但是,当然,它不会将相机飞到视图中。它只是立即设置视图。

我的问题是,如何利用我的lat,lng,航向,俯仰和范围值将相机飞到铯中的外观?

以下是GE和Cesium的相关API文档,如果您发现它们有用。

GE createLookAt proxyquire

GE Camera Control(搜索“平移到绝对位置”) https://developers.google.com/earth/documentation/reference/interface_g_e_plugin.html#a82f1b3618531a6bfab793b04c76a43e7

Cesium lookAt https://developers.google.com/earth/documentation/camera_control

Cesium flyTo https://cesiumjs.org/Cesium/Build/Documentation/Camera.html#lookAt

我也发现了这一点但不确定如何整合它。如果有人可以提供一个codepen / jsfiddle或类似的东西,将不胜感激! https://cesiumjs.org/Cesium/Build/Documentation/Camera.html#flyTo

1 个答案:

答案 0 :(得分:3)

感谢Cesium论坛的Hannah Pinkos提供答案。

创建实体并使用Google地球插件中的标题,俯仰(倾斜)和范围值后,您可以飞到具有偏移量的实体...

var heading = Cesium.Math.toRadians(20.1690873648706g);
var pitch = Cesium.Math.toRadians(74.9605580474674 - 90);
var range = 764.534479411941;

TVV.mapObject.flyTo(entity, {
 offset: new Cesium.HeadingPitchRange(heading, pitch, range)
});