Gis 在铯地图上找到中心
我需要知道铯原子图的当前中心是什么 我尝试使用Gis 在铯地图上找到中心,gis,cesium,Gis,Cesium,我需要知道铯原子图的当前中心是什么 我尝试使用viewer.camera.position但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274),我不确定x和y值。它们以米为单位吗 非常感谢 编辑:解决方案 在我得到的所有帮助下(谢谢!)我将以下内容组合在一起: getPosition(){ if (viewer.scene.mode == 3) { var windowPosition = new
viewer.camera.position
但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274),我不确定x和y值。它们以米为单位吗
非常感谢
编辑:解决方案
在我得到的所有帮助下(谢谢!)我将以下内容组合在一起:
getPosition(){
if (viewer.scene.mode == 3) {
var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
var pickRay = viewer.scene.camera.getPickRay(windowPosition);
var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
console.log(pickPositionCartographic.longitude * (180 / Math.PI));
console.log(pickPositionCartographic.latitude * (180 / Math.PI));
} else if (viewer.scene.mode == 2) {
var camPos = viewer.camera.positionCartographic;
console.log(camPos.longitude * (180 / Math.PI));
console.log(camPos.latitude * (180 / Math.PI));
}
};
此函数以度为单位提供经度/纬度坐标。viewer.camera.position提供相机在X、Y、Z坐标中相对于地球中心的位置,以米为单位 根据所使用的场景模式,该方法有所不同: SCENE3D: 为了看到相机在看什么,需要获取相机的拾取光线和贴图的交点
function getMapCenter() {
var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
var pickRay = viewer.scene.camera.getPickRay(windowPosition);
var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
console.log(pickPositionCartographic.longitude * (180/Math.PI));
console.log(pickPositionCartographic.latitude * (180/Math.PI));
}
基于
还要检查摄像机是否在看地图,而不是看天空
SCENE2D:
这是一个简单的2D视图,相机直接指向下方
从文档:
2D模式。使用正交投影自上而下查看地图
其余病例为2.5D或COLUMBUS_VIEW回答正确。对于相机未查看地图/地球仪的情况,在使用笛卡尔地图中的值之前,应先测试
(pickPosition==undefined)
。我使用的是2D地图,并使用建议的“getMapCenter()”函数,但我总是得到“pickPosition==undefined”。我不确定我能做些什么来得到正确的位置,我不认为相机没有在看地图。。。它在屏幕上。在简单的情况下,如果您不旋转相机并且总是向下看地图,那么您可以使用以下命令:var camPos=viewer.camera.positionmagraphic;log(camPos.longitude*(180/Math.PI));log(camPos.latitude*(180/Math.PI))代码>是,笛卡尔值以米为单位。X轴从地球中心向外指向纬度0、经度0、高度0。Z轴从中心向外指向北极。Y轴与其他两个轴构成右手坐标系。您必须使用椭球体.CartesiantoMaptographic
(如下面的答案所示)来执行转换。
var camPos = viewer.camera.positionCartographic;
console.log(camPos.longitude * (180/Math.PI));
console.log(camPos.latitude * (180/Math.PI));