[cesium] 事件和地图坐标转换

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);

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值