国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久

顯示源代碼
模擬飛行-第一視角
 開發文檔
            <!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'/>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
    <link  rel='stylesheet'/>
    <script src='http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js'></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.6.0/echarts.min.js"></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }
        #container {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }
        .info{
            position: fixed;
            top:0;
            color: #8a6d3b;
            z-index: 99;
            margin: 0;
            background-color: #fcf8e3;
            border-color: #faebcc;
            left: 0;
            right: 0;
            text-align: center;
        }
        #chart{
            border: 1px solid red;
            height: 200px;
            position: absolute;
            z-index:99;
            left: 0;
            padding:14px;
            bottom: 0;
            right: 0;
            background-color: rgba(241,250,250,0.3);
        }
    </style>
    <title>模擬飛行</title>
</head>
<body>
<div class="info">
    使用方向鍵控制飛行 “←” 向左飛行,“→”:向右飛行,“↑” 升高,“↓” 下降,空格暫停
</div>
<div id="chart">

</div>
<div id='container'></div>
<script>
    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', {
        terrainId: 'bigemap.dc-terrain',
        mapId: 'bigemap.dc-tian-w-satellite',
        requestRenderMode:false,
        shouldAnimate:true,
    });
    var canvas = viewer.canvas;
    canvas.setAttribute("tabindex", "0"); 
    canvas.addEventListener("click", function () {
        canvas.focus();
    });
    canvas.focus();
    viewer.scene.globe.depthTestAgainstTerrain=true;
    var config = {
        init: {
            lat: 30.950543,
            lng: 103.0004609201,
            height: 4000,
            minHeight:0
        },
        fly:true,
        requireHeight:true,
        angle:{
            delta: 0.5,
            left:0,
            down:0,
            r:0,
            p:0,
        },
        position: {},
        delta: 0.00003,
    };
    config.position = Object.assign({}, config.init);
    viewer.scene.camera.setView({
        destination: bmgl.Cartesian3.fromDegrees(config.init.lng, config.init.lat, config.init.height),
        // orientation: initialOrientation,
        endTransform: bmgl.Matrix4.IDENTITY,
    });
    function getHeight(){
        config.requireHeight=false;
        var promise=bmgl.sampleTerrainMostDetailed(viewer.terrainProvider,[bmgl.Cartographic.fromDegrees(config.position.lng,config.position.lat)]);
        bmgl.when(promise,(data)=>{
            if (data&&data[0]&&data[0]['height']&&data[0]['height']>0&&config.position.height<data['0']['height']+100){
                config.position.minHeight=data['0']['height']+100;
            }
            config.requireHeight=true;
        }).otherwise(()=>{
            config.requireHeight=true;
        });
    }
    viewer.clock.onTick.addEventListener(function (e) {
        getHeight();
        if (config.fly){
            config.position.lat += Math.cos(bmgl.Math.toRadians(config.angle.left))*config.delta;
            config.position.lng += Math.sin(bmgl.Math.toRadians(config.angle.left))*config.delta;
        }
        if (config.angle.p&&!config.keydown){
            config.angle.p>0?config.angle.p-=config.angle.delta:config.angle.p+=config.angle.delta;
        }
        if (config.angle.r&&!config.keydown){
            config.angle.r>0?config.angle.r-=config.angle.delta:config.angle.r+=config.angle.delta;
        }
        // console.log(Math.max(config.position.height,config.position.minHeight));
        var p=bmgl.Cartesian3.fromDegrees(config.position.lng, config.position.lat,Math.max(config.position.height,config.position.minHeight));
        viewer.camera.setView({
            destination:p,
            orientation:{
                heading:bmgl.Math.toRadians(config.angle.left),
                pitch:bmgl.Math.toRadians(config.angle.p-3),
                roll:-bmgl.Math.toRadians(config.angle.r)
            },
            endTransform:bmgl.Matrix4.IDENTITY,
        });
    });
    document.addEventListener('keydown', function (e) {
        config.keydown=true;
        switch (e.keyCode) {
            case 32://空格
                config.fly=!config.fly;
                break;
            case 37://左
                config.angle.left-=1;
                if (config.angle.r>-30)  config.angle.r-=config.angle.delta;
                break;
            case 38://向上
                config.position.height+=10;
                if (config.angle.p<30)  config.angle.p+=config.angle.delta;
                break;
            case 39://向右
                if (config.angle.r<30)  config.angle.r+=config.angle.delta;
                config.angle.left+=1;
                break;
            case 40://向下
                config.position.height-=10;
                if (config.angle.p>-30)  config.angle.p-=config.angle.delta;
                if (config.position.height<10) config.position.height=10;
                break;

        }
    });

    document.addEventListener('keyup',()=>{
        config.keydown=false;
    });

    var option = {
        tooltip : {
            formatter: "{a} <br/>{c} {b}"
        },
        toolbox: {
            show: false,
            feature: {
                restore: {show: true},
                saveAsImage: {show: true}
            }
        },
        series : [
            {
                name: '偏航角',
                type: 'gauge',
                center: ['20%', '50%'],    // 默認全局居中
                radius: '75%',
                min:-30,
                max:30,
                splitNumber:10,
                axisLine: {            // 坐標軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 8,
                        color:[[1, '#91c7ae']],
                    }
                },
                axisTick: {            // 坐標軸小標記
                    length:12,        // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        color: 'auto'
                    }
                },
                splitLine: {           // 分隔線
                    length:20,         // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle(詳見lineStyle)控制線條樣式
                        color: 'auto'
                    }
                },
                pointer: {
                    width:5
                },
                title: {
                    offsetCenter: [0, '-30%'],       // x, y,單位px
                },
                detail: {
                    offsetCenter:[0,'30%'],
                    textStyle: {       // 其余屬性默認使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 18,
                        color:'#f1f1f1',
                    }
                },
                data:[{value: 0, name: 'deg'}]
            },
            {
                name: '飛行高度',
                type: 'gauge',
                z: 3,
                min: 1000,
                max: 10000,
                splitNumber: 10,
                radius: '100%',
                axisLine: {            // 坐標軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 10,
                        color: [[1,'#4596FB']]
                    }
                },
                axisTick: {            // 坐標軸小標記
                    length: 15,        // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        color: 'auto'
                    }
                },
                splitLine: {           // 分隔線
                    length: 20,         // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle(詳見lineStyle)控制線條樣式
                        color: 'auto'
                    }
                },
                title : {
                    textStyle: {       // 其余屬性默認使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 20,
                        fontStyle: 'italic'
                    }
                },
                detail : {
                    offsetCenter:[0,'30%'],
                    textStyle: {       // 其余屬性默認使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 18,
                        color:'#f1f1f1',
                    }
                },
                data:[{value: config.init.height, name: 'm'}]
            },
            {
                name: '俯仰角',
                type: 'gauge',
                z: 3,
                min: -30,
                max:30,
                center: ['75%', '55%'],
                splitNumber: 10,
                radius: '70%',
                axisLine: {            // 坐標軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 10,
                        color:[[1, '#91c7ae']],
                    },
                },
                axisTick: {            // 坐標軸小標記
                    length: 15,        // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        color: 'auto'
                    }
                },
                splitLine: {           // 分隔線
                    length: 20,         // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle(詳見lineStyle)控制線條樣式
                        color: 'auto'
                    }
                },
                title : {
                    show:false,
                    textStyle: {       // 其余屬性默認使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 20,
                        fontStyle: 'italic'
                    }
                },
                detail : {
                    offsetCenter:[0,'30%'],
                    textStyle: {       // 其余屬性默認使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 18,
                        color:'#f1f1f1',
                    }
                },
                data:[{value: 0, name: 'deg'}]
            },
        ]
    };
    var myChart=echarts.init(document.getElementById('chart'));
    myChart.setOption(option);
    setInterval(function (){
        option.series[0].data[0].value =(config.angle.r).toFixed(1);
        option.series[1].data[0].value =Math.floor(Math.max(Math.max(config.position.height,config.position.minHeight)));
        option.series[2].data[0].value =(config.angle.p).toFixed(1);
        myChart.setOption(option,true);
        myChart.resize();
    },100);
</script>
</body>
</html>                                                                                                                                                                                                                                
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 国产精品 日韩| 日日骚一区二区网站| 麻豆av一区二区三区| www.av一区视频| 欧美日韩一区二区三区在线观看免| 欧美一区国产一区| av成人在线电影| 亚洲精品高清国产一线久久| 影音先锋久久久| 91九色蝌蚪成人| 亚洲人成人77777线观看| 亚洲精品一区二区三| 精品国产免费久久久久久尖叫| 欧美国产综合| 国产精品99久久久久久久| 亚洲欧美日产图| 亚洲看片网站| 日韩欧美精品一区二区三区经典 | 海角社区69精品视频| 久久综合给合久久狠狠色| 正在播放久久| 国产在线播放一区二区| 91原创国产| 国产日韩亚洲精品| 中文日韩欧美| 中国成人在线视频| 午夜国产精品视频免费体验区| 一卡二卡3卡四卡高清精品视频| 天天久久人人| 国产精品sm| 亚洲激情婷婷| 影音先锋欧美资源| 狠狠入ady亚洲精品| 翔田千里亚洲一二三区| 亚洲一区3d动漫同人无遮挡| 亚洲欧美国产精品桃花| 欧美久久一级| 亚洲九九精品| 老妇喷水一区二区三区| 国产精品一 二 三| 日本在线视频不卡| 国产另类第一区| 茄子视频成人在线观看 | 正义之心1992免费观看全集完整版| 一区二区在线观| 亚洲伦伦在线| 久久综合精品一区| 欧美重口乱码一区二区| 欧美一区二区视频在线| 奇米视频888战线精品播放| 亚洲一区高清| 国产精品久久久久久久免费软件| 国精品一区二区三区| 国产伦理一区| 亚洲欧美网站| 久久精品国产精品国产精品污 | 日本黑人久久| 亚洲图色在线| 国产精品香蕉视屏| 自拍偷拍99| 久久婷婷国产综合尤物精品| 欧美日韩一区在线观看视频| 无码免费一区二区三区免费播放| 欧美日韩蜜桃| 色爱区成人综合网| 国产一区二区黄色| 欧美亚洲免费在线| 国产欧美69| 奇米888一区二区三区| 一道本一区二区| 日韩视频在线播放| 亚洲欧美电影在线观看| 日韩视频专区| 91精品久久久久久蜜桃| 欧美成人久久| 精品视频一区在线| 国产一区二区三区的电影| 久久视频在线观看中文字幕| 欧美一区观看| 久久久天天操| 韩日成人在线| 日本一区二区三区免费观看| 先锋影音久久久| 欧美体内she精视频在线观看| 成人一区二区在线| 在线播放精品| 视频一区二区三区免费观看| 99www免费人成精品| 欧美精品观看| 欧美日韩精品久久| 欧美精品一区在线| 久久精品日产第一区二区三区精品版 | 国产私拍一区| 亚洲中字黄色| 雨宫琴音一区二区在线| 亚洲永久一区二区三区在线| 国产精品一区二区在线观看| 国产欧美短视频| 国内精品亚洲| 欧美日韩ab| 亚洲一区二区三区午夜| 欧美激情视频一区二区三区| 玖玖在线精品| 久久av在线| 国产农村妇女精品一区二区| 国产在线精品二区| 中文字幕日韩一区二区三区不卡| 精品欧美一区二区三区久久久| 久久亚洲不卡| 91在线看网站| 3d动漫啪啪精品一区二区免费| 国产精品美女xx| 国产一区二区三区免费不卡| 国模精品娜娜一二三区| 欧美日韩精品| 欧美日本二区| 狠狠色丁香久久综合频道| 欧美黄污视频| 国内自拍一区| 亚洲欧洲日本国产| 亚洲国产日韩欧美| 国产精品一区视频网站| 国产日韩欧美精品| 麻豆九一精品爱看视频在线观看免费| 亚洲美女黄色| 鲁鲁狠狠狠7777一区二区| 麻豆av福利av久久av| 99精彩视频在线观看免费| 国产成人一区二区三区免费看| 97人人做人人人难人人做| 成人情视频高清免费观看电影| 国产成人精品免费视频大全最热 | 久久亚洲欧美| 国产精品嫩草在线观看| 精品在线视频一区二区| 亚洲电影网站| 很黄很黄激情成人| 午夜亚洲伦理| 免费一区二区三区| 午夜久久福利| 性伦欧美刺激片在线观看| 91传媒在线免费观看| 精品日本一区二区三区在线观看| 久久精品日韩| 欧美大片专区| 久久激情久久| 欧美日韩亚洲在线| 亚洲夜间福利| 高清视频一区| 亚洲啪啪av| 亚洲欧美日韩在线观看a三区| 国产色综合一区二区三区| 性欧美videosex高清少妇| 亚洲精品男同| 久久久影院一区二区三区| 综合国产精品久久久| 免费视频一区| 少妇特黄a一区二区三区| 亚洲国产美女| 久久亚洲精品欧美| 亚洲国产精品综合| 精品日韩美女| 亚洲巨乳在线| 欧美一二三四五区| 亚洲精品一区二区三区樱花| 精品无码久久久久国产| 亚洲国产精品www| 蜜桃狠狠色伊人亚洲综合网站| 亚洲视频狠狠| 另类小说综合网| 国产日韩精品视频一区二区三区| 精品一区二区三区国产| 99国产精品久久久久久久| 欧美一区观看| 久久精品道一区二区三区| 性刺激综合网| 国产经典一区二区三区| 亚洲激情av| 先锋影音欧美| 国产精品一区二| 99成人在线| 正在播放一区二区三区| 国产在线精品二区| 免费在线亚洲| 黑丝一区二区| 亚洲一二区在线| 国产精品对白一区二区三区| 亚洲国产99| 一区二区三区av| 欧美日本亚洲| 丁香婷婷久久久综合精品国产| 黄色欧美成人| 午夜国产精品视频免费体验区| 精品欧美国产| 99re在线播放| 香蕉国产精品偷在线观看不卡| 欧美日本中文| 中文字幕av日韩精品| 欧美精品二区三区四区免费看视频| 欧美综合二区|