cesium事件
cesium提供的鼠标监听接口,接口提供setInputAction接口对监听事件属性
var viewer = new Cesium.Viewer('cesiumContainer');
1.相机事件(移动开始、移动结束等等)
viewer.scene.camera.moveEnd.addEventListener(function(){
});
2.鼠标事件(单击、移动、右键等)
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (movement) {
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
3.渲染事件(实时渲染,很关键的一个事件)
var renderEnd = viewer.scene.postRender.addEventListener(function(){
});
//鼠标事件
//1、左键单击事件
handler.setInputAction(function(click){
console.log('左键单击事件:',click.position);
},Cesium.ScreenSpaceEventType.LEFT_CLICK);
//2、左键双击事件
handler.setInputAction(function(click){
console.log('左键双击事件:',click.position);
},Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
//3、左键按下事件
handler.setInputAction(function(click){
console.log('左键按下事件:',click.position);
},Cesium.ScreenSpaceEventType.LEFT_DOWN);
//4、左键弹起事件
handler.setInputAction(function(click){
console.log('左键弹起事件:',click.position);
},Cesium.ScreenSpaceEventType.LEFT_UP);
//5、中键单击事件
handler.setInputAction(function(click){
console.log('中键单击事件:',click.position);
},Cesium.ScreenSpaceEventType.MIDDLE_CLICK);
//6、中键按下事件
handler.setInputAction(function(click){
console.log('中键按下事件:',click.position);
},Cesium.ScreenSpaceEventType.MIDDLE_DOWN);
//7、中键弹起事件
handler.setInputAction(function(click){
console.log('中键弹起事件:',click.position);
},Cesium.ScreenSpaceEventType.MIDDLE_UP);
//8、移动事件
handler.setInputAction(function(movement){
console.log('移动事件:',movement.endPosition);
},Cesium.ScreenSpaceEventType.MOUSE_MOVE);
//9、右键单击事件
handler.setInputAction(function(click){
console.log('右键单击事件',click.position);
},Cesium.ScreenSpaceEventType.RIGHT_CLICK);
//10、右键按下事件
handler.setInputAction(function(click){
console.log('右键按下事件',click.position);
},Cesium.ScreenSpaceEventType.RIGHT_DOWN);
//11、右键弹起事件
handler.setInputAction(function(click){
console.log('右键弹起事件',click.position);
},Cesium.ScreenSpaceEventType.RIGHT_UP);
//12、滚轮事件
handler.setInputAction(function(wheelment){
console.log('滚轮事件:',wheelment);
},Cesium.ScreenSpaceEventType.WHEEL);
//删除事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
cesium 坐标转换
//坐标转换
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);