【发布时间】:2016-02-11 00:48:32
【问题描述】:
想模仿 CesiumJS 应用程序中的左右箭头键,类似于 Google 地球导航。按向右或向左箭头键应将地球仪分别向右或向左旋转约 5% 的视图边界。如果缩小则旋转较大范围,放大则旋转较小范围。
已经查看了Viewer、Camera、Scene 等的文档,但不清楚如何做应该简单的事情。
能够向右或向左旋转固定量,但希望根据视图范围内的宽度旋转量。你如何获得铯中视图的最大范围顶部,左侧,右侧,底部?
var viewer = new Cesium.Viewer('cesiumContainer', {
navigationHelpButton: false, animation: false, timeline: false
});
var camera = viewer.camera;
document.addEventListener('keydown', function(e) {
setKey(e);
}, false);
function setKey(event) {
if (event.keyCode == 39) { // right arrow
camera.rotateRight(Cesium.Math.toRadians(10.0));
} else if (event.keyCode == 37) { // left arrow
camera.rotateLeft(Cesium.Math.toRadians(10.0));
}
}
要进行测试,请访问SandCastle app 并粘贴上面的javascript sn-p。要激活键盘绑定,请单击全屏模式,箭头键将起作用。
或者,可以使用相机来访问 positionCartographic,但这只是相机的制图位置,而不是视图边界。
var positionCartographic = camera.positionCartographic;
var height = positionCartographic.height;
var lat = positionCartographic.latitude;
var lon = positionCartographic.longitude + Cesium.Math.toRadians(10.0);
camera.flyTo({
destination: Cesium.Cartesian3.fromRadians(lon, lat, height),
duration: 1.0
});
这里给中心视点增加了一个固定的角度,但是角度需要是视图范围内最大和最小经度值之差的百分比;例如角度 = (maxLon - minLon) / 20
【问题讨论】:
标签: rotation geospatial cesium