zoukankan      html  css  js  c++  java
  • 实时获取三维地图相机角度,改变三维观赏角度

    html 界面加个按钮,点击事件,和下面方法关联起来就可以了。

    /**
     * 获取当前场景的相机视角参数
     * 20190929 niuliting
     */
    function getCurrentExtent() {
        // 范围对象
        var extent = {};
        // 得到当前三维场景
        var scene = viewer.scene;
        // 得到当前三维场景的椭球体
        var ellipsoid = scene.globe.ellipsoid;
        var canvas = scene.canvas;
        // canvas左上角
        var car3_lt = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0, 0),
                ellipsoid);
        // canvas右下角
        var car3_rb = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(
                canvas.width, canvas.height), ellipsoid);
        // 当canvas左上角和右下角全部在椭球体上
        if (car3_lt && car3_rb) {
            var carto_lt = ellipsoid.cartesianToCartographic(car3_lt);
            var carto_rb = ellipsoid.cartesianToCartographic(car3_rb);
            extent.xmin = Cesium.Math.toDegrees(carto_lt.longitude);
            extent.ymax = Cesium.Math.toDegrees(carto_lt.latitude);
            extent.xmax = Cesium.Math.toDegrees(carto_rb.longitude);
            extent.ymin = Cesium.Math.toDegrees(carto_rb.latitude);
        }
        // 当canvas左上角不在但右下角在椭球体上
        else if (!car3_lt && car3_rb) {
            var car3_lt2 = null;
            var yIndex = 0;
            do {
                // 这里每次10像素递加,一是10像素相差不大,二是为了提高程序运行效率
                yIndex <= canvas.height ? yIndex += 10 : canvas.height;
                car3_lt2 = viewer.camera.pickEllipsoid(new Cesium.Cartesian2(0,
                        yIndex), ellipsoid);
            } while (!car3_lt2);
            var carto_lt2 = ellipsoid.cartesianToCartographic(car3_lt2);
            var carto_rb2 = ellipsoid.cartesianToCartographic(car3_rb);
            extent.xmax = Cesium.Math.toDegrees(carto_lt2.longitude);
            extent.ymax = Cesium.Math.toDegrees(carto_lt2.latitude);
            extent.xmin = Cesium.Math.toDegrees(carto_rb2.longitude);
            extent.ymin = Cesium.Math.toDegrees(carto_rb2.latitude);
        }
        // 获取高度
        extent.height = Math.ceil(viewer.camera.positionCartographic.height);
        extent.lon = Cesium.Math
                .toDegrees(viewer.camera.positionCartographic.longitude);
        extent.lat = Cesium.Math
                .toDegrees(viewer.camera.positionCartographic.latitude);
        extent.heading = Cesium.Math.toDegrees(viewer.camera.heading);
        extent.pitch = Cesium.Math.toDegrees(viewer.camera.pitch);
        extent.roll = Cesium.Math.toDegrees(viewer.camera.roll);
        //console.log("lon:"+extent.lon+"--lat:"+extent.lat+"--height:"+extent.height+"--heading:" + extent.heading + "--pitch:" + extent.pitch
                //+ "--roll:" + extent.roll);
        //console.log('{"lon":"'+extent.lon+'","lat":"'+extent.lat+'","height":"'+extent.height+'","heading":"'+extent.heading+'","pitch":"'+extent.pitch+'","roll":"'+extent.roll+'"}');
        console.log("{'lon':"+extent.lon+",'lat':"+extent.lat+",'height':"+extent.height+",'heading':"+extent.heading+",'pitch':"+extent.pitch+",'roll':"+extent.roll+"}");
        
        return extent;
    } 
     
  • 相关阅读:
    buuctf-web [强网杯 2019]随便注 1
    buuctf-crypto 引用可打印
    buuctf-crypto 变异凯撒
    buuctf-misc 文件中的秘密
    buuctf-misc LSB
    nginx 模块配置
    cloudflare CDN下nginx获取用户真实IP地址
    使用nginx后如何在web应用中获取用户ip及原理解释
    获取用户真实 ip 地址的 nginx 相关配置
    解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
  • 原文地址:https://www.cnblogs.com/wanlige/p/12955197.html
Copyright © 2011-2022 走看看