cesium的鼠標事件(最基礎的顯示鼠標位置坐標)


一、cesium屏幕空間事件控制者接口:ScreenSpaceEventHandler(參數canvas)

#var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

創建了一個屏幕控制實例,控制cesium的canvas

#調用setInputAction,從英文上就能看出這是設置輸入行為

handler.setInputAction(function(x){y},事件類型ScreenSpaceEventType );

這里注意:移動是movement,移動終點的位置是movement.endPosition;點擊是click,點擊的位置是click.position

核心代碼如下,上下邏輯就不貼了。

//鼠標移動的事件
handler.setInputAction(function(movement){
  //獲取鼠標位置,camera.pickEllipsoid()返回一個cartesian類型位置 let click_position
= viewer.scene.camera.pickEllipsoid(movement.endPosition,my_ellipsoid);
  //位置數據轉換只地理數據類型 let carto_position
= my_ellipsoid.cartesianToCartographic(click_position);   //cesium函數轉換至地理數據類型的經緯度
  let longitude_x
= Cesium.Math.toDegrees(carto_position.longitude); let longitude_y = Cesium.Math.toDegrees(carto_position.latitude); //topDiv是html中的div
  topDiv.innerHTML
="點擊坐標的位置為"+longitude_x+"經度,"+longitude_y+"緯度"; },Cesium.ScreenSpaceEventType.MOUSE_MOVE)//ScreenSpaceEventType
 
        

 

//鼠標左鍵點擊事件
handler.setInputAction(function(click){
    var click_position =  viewer.camera.pickEllipsoid(click.position,my_ellipsoid);//click換成movement也可實現,但是position不是endposition
    var carto_position = Cesium.Cartographic.fromCartesian(click_position);
    //var carto_position = my_ellipsoid.cartesianToCartographic(click_position);
    var longitude_x = Cesium.Math.toDegrees(carto_position.longitude).toFixed(3);
    var longitude_y = Cesium.Math.toDegrees(carto_position.latitude).toFixed(3);
    topDdv.innerHTML="點擊坐標的位置為"+longitude_x+"經度,"+longitude_y+"緯度";},Cesium.ScreenSpaceEventType.LEFT_CLICK)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM