首页 / 浏览问题 / 三维GIS / 问题详情
camera的positionCartographic属性
545EXP 2018年11月05日

如题,相机的这个属性在api中的描述是 Gets the Cartographic position of the camera, with longitude and latitude expressed in radians and height in meters. In 2D and Columbus View, it is possible for the returned longitude and latitude to be outside the range of valid longitudes and latitudes when the camera is outside the map.

是如果将获取到的camera.position中的坐标转换成弧度制的?还是有其他的运算?

2 个回答

问题解决方式:

camera中的position属性转换成positionCartographic属性的方法,通过查看cesium的源代码查看得到

let point = new Cesium.Cartesian3(parseFloat(item.X), parseFloat(item.Y), parseFloat(300))
let pointCartographic = Viewer.scene.camera._projection.unproject(point)

item即position,pointCartographic即positionCartographic

545EXP 2018年11月14日
您可以通过Cesium.Cartographic.fromCartesian(cartesian, ellipsoid, result)将cesium笛卡尔坐标系转换为弧度单位的经纬度坐标系。
5,560EXP 2018年11月05日

转换出来的参数不对

center是获取地图的中心 即平面坐标

po是新建的 cartesian

po1是转换后的 与问题中的图不太一致

之后进行转换po1x,po1y是将弧度转为经纬度的 差距比较大

用问题中的图片转出来的如图

是不是你包太旧了?我用随便找了个示例测了下,返回的position是笛卡尔坐标系,就是xyz都是正负7位数的那种。

参考示例:http://support.supermap.com.cn:8090/webgl/examples/editor.html#pickPosition

在点击事件中添加方法:console.log(viewer.scene.camera);

事例中为经纬度坐标,我的场景是哥伦布视图的平面坐标

问题现在就是我用 Cesium.Cartographic.fromCartesian()方法转换出来的坐标,我再用Cesium.Math.toDegrees()方法转换,得到的值不一致;

即图一中的po1x应该要和图2中的longitude一致,po1y和latitude一致;

我就是不知道Viewer.scene.camera.positionCartographic的坐标值是如何得到的,用Cesium.Cartographic.fromCartesian()出来的值是不对的,所以进行之后的Cesium.Math.toDegrees()自然出来的值也不一致。

这样来的

viewer.scene.camera._projection.unproject(viewer.camera.position)

...