cesium中常用的坐標有兩種WGS84地理坐標系和笛卡爾空間坐標系(世界坐標)。我們平時常用的以經緯度來指明一個地點就是用的WGS84坐標,笛卡爾空間坐標系常用來做一些空間位置變換如平移旋轉縮放等等。二者的聯系如下圖, 笛卡爾空間坐標的原點就是橢球的中心. 。
Pick----屏幕坐標 Cartesian----世界坐標 cartographic-----地理坐標(弧度)
Point----經緯度坐標
1.屏幕坐標轉世界坐標
var pick= new Cesium.Cartesian2(window.innerWidth,window.innerHeight);
var cartesian = scene.globe.pick(viewer.camera.getPickRay(pick), scene);
注:一共是兩步
(在2D下上述方法不適用,改成:
var pick= new Cesium.Cartesian2(0,0); var cartesian = viewer.camera.pickEllipsoid(pick, viewer.scene.globe.ellipsoid);
)
2.世界坐標轉地理坐標(弧度)
var cartographic = scene.globe.ellipsoid.cartesianToCartographic(cartesian);
或
var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
3.世界坐標轉屏幕坐標
var pick = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, cartesian);
4.地理坐標(弧度)轉經緯度坐標
var point=[ cartographic.longitude / Math.PI * 180, cartographic.latitude / Math.PI * 180];
5.地理坐標(弧度)轉世界坐標
var cartesian = scene.globe.ellipsoid. cartographicTo Cartesian (cartographic);
6.經緯度坐標轉地理坐標(弧度)
var cartographic = Cesium.Cartographic.fromDegree(point);
7.經緯度坐標轉世界坐標
var cartesian = Cesium. Cartesian 3.fromDegree(point);