1. 坐标系转换
1.1 cesium使用到的坐标系
屏幕坐标系,二维的笛卡尔坐标系,API => Cartesian2 地理空间坐标系,WGS-84坐标系, API => Cartographic(经度,维度,高度) 三维笛卡尔空间直角坐标系,API => Cartesian3
1.2 坐标转换具体实现
var radians= Cesium. Math. toRadians ( 90 ) ;
console. log ( "radians ==> " + radians) ;
var degrees= Cesium. Math. toDegrees ( 2 * Math. PI ) ;
console. log ( "degrees ==> " + degrees) ;
var cartesian3= Cesium. Cartesian3. fromDegrees ( 89.5 , 20.4 , 100
) ;
console. log ( "cartesian3 ==> " + cartesian3) ;
var cartographic= Cesium. Cartographic. fromCartesian ( cartesian3) ;
console. log ( "cartographic ==> " + cartographic) ;
var longitude= Cesium. Math. toDegrees ( cartographic. longitude) ;
var latitude= Cesium. Math. toDegrees ( cartographic. latitude) ;
console. log ( "LonLat ==> " + longitude+ "," + latitude) ;
2. 设置相机的位置和视角
var position = Cesium. Cartesian3. fromDegrees ( 116.393428 , 39.90923 , 100 ) ; viewer. camera. setView ( { destination : position, orientation : { heading : Cesium. Math. toRadians ( 0 ) , pitch : Cesium. Math. toRadians ( - 20 ) , roll : 0 , } , } ) ;
viewer. camera. flyTo ( { destination : position, orientation : { heading : Cesium. Math. toRadians ( 0 ) , pitch : Cesium. Math. toRadians ( - 20 ) , roll : 0 , } ,
} ) ;
3. 使用键盘控制相机的位置和视角
document. addEventListener ( "keydown" , ( e ) => { var height = viewer. camera. positionCartographic. height; var moveRate = height / 100 ; if ( e. key == "w" ) { viewer. camera. moveForward ( moveRate) ; } else if ( e. key == "s" ) { viewer. camera. moveBackward ( moveRate) ; } else if ( e. key == "a" ) { viewer. camera. moveLeft ( moveRate) ; } else if ( e. key == "d" ) { viewer. camera. moveRight ( moveRate) ; } else if ( e. key == "q" ) { viewer. camera. lookLeft ( Cesium. Math. toRadians ( 0.1 ) ) ; } else if ( e. key == "e" ) { viewer. camera. lookRight ( Cesium. Math. toRadians ( 0.1 ) ) ; } else if ( e. key == "r" ) { viewer. camera. lookUp ( Cesium. Math. toRadians ( 0.1 ) ) ; } else if ( e. key == "f" ) { viewer. camera. lookDown ( Cesium. Math. toRadians ( 0.1 ) ) ; } else if ( e. key == "g" ) { viewer. camera. twistLeft ( Cesium. Math. toRadians ( 0.1 ) ) ; } else if ( e. key == "h" ) { viewer. camera. twistRight ( Cesium. Math. toRadians ( 0.1 ) ) ; } } ) ;