cesium隨筆 — 獲取當前鼠標的經度、緯度、高度


代碼:

function getPosition() {
        //得到當前三維場景
        var scene = viewer.scene;
        //得到當前三維場景的橢球體
        var ellipsoid = scene.globe.ellipsoid;
        var entity = viewer.entities.add({
            label : {
                show : false
            }
        });
        var longitudeString = null;
        var latitudeString = null;
        var height = null;
        var cartesian = null;
        // 定義當前場景的畫布元素的事件處理
        var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
        //設置鼠標移動事件的處理函數,這里負責監聽x,y坐標值變化
        handler.setInputAction(function(movement) {
            //通過指定的橢球或者地圖對應的坐標系,將鼠標的二維坐標轉換為對應橢球體三維坐標
            cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
            if (cartesian) {
                //將笛卡爾坐標轉換為地理坐標
                var cartographic = ellipsoid.cartesianToCartographic(cartesian);
                //將弧度轉為度的十進制度表示
                longitudeString = Cesium.Math.toDegrees(cartographic.longitude);
                latitudeString = Cesium.Math.toDegrees(cartographic.latitude);
                //獲取相機高度
                height = Math.ceil(viewer.camera.positionCartographic.height);
                entity.position = cartesian;
                entity.label.show = true;
                entity.label.text = '(' + longitudeString + ', ' + latitudeString + "," + height + ')' ;
            }else {
                entity.label.show = false;
            }
        }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
        //設置鼠標滾動事件的處理函數,這里負責監聽高度值變化
        handler.setInputAction(function(wheelment) {
            height = Math.ceil(viewer.camera.positionCartographic.height);
            entity.position = cartesian;
            entity.label.show = true;
            entity.label.text = '(' + longitudeString + ', ' + latitudeString + "," + height + ')' ;
        }, Cesium.ScreenSpaceEventType.WHEEL);
    }

效果:


免責聲明!

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



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