文章出處

代碼:

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

效果:


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()