思路:
1、获取当前相机位置 P1
2、获取屏幕中心点位置 P2
3、计算亮点的经度差和纬度差
4、飞行的目标减去dx、dy
注: 当飞行前后高度变化时,此方法不适用,需另外计算比例。
var p = viewer.camera._positionCartographic
var left = $('#cesiumContainer').offset().left
var top = $('#cesiumContainer').offset().top
var width = parseFloat($('#cesiumContainer').css('width').split('px')[0])
var height = parseFloat($('#cesiumContainer').css('height').split('px')[0])
var x = left + width / 2
var y = top + height / 2
var _center = new Cesium.Cartesian2(x, y);
var __center = viewer.scene.globe.pick(PickRay(_center), viewer.scene);
var center = viewer.scene.globe.ellipsoid.cartesianToCartographic(__center);
dx = (center.longitude - p.longitude) / Math.PI * 180
dy = (center.latitude - p.latitude) / Math.PI * 180
var heading = viewer.camera.heading
var pitch = viewer.camera.pitch
var height = p.height
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(116.4997625442 - dx, 39.9843650681 - dy, height ),
orientation: {
heading: heading ,
pitch: pitch
}
})
本文发布于:2024-02-01 00:23:20,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671820332468.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |