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

顯示源代碼
模擬飛行-第一視角
 開發(fā)文檔
            <!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%'],    // 默認(rèn)全局居中
                radius: '75%',
                min:-30,
                max:30,
                splitNumber:10,
                axisLine: {            // 坐標(biāo)軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 8,
                        color:[[1, '#91c7ae']],
                    }
                },
                axisTick: {            // 坐標(biāo)軸小標(biāo)記
                    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: {       // 其余屬性默認(rèn)使用全局文本樣式,詳見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: {            // 坐標(biāo)軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 10,
                        color: [[1,'#4596FB']]
                    }
                },
                axisTick: {            // 坐標(biāo)軸小標(biāo)記
                    length: 15,        // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        color: 'auto'
                    }
                },
                splitLine: {           // 分隔線
                    length: 20,         // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle(詳見lineStyle)控制線條樣式
                        color: 'auto'
                    }
                },
                title : {
                    textStyle: {       // 其余屬性默認(rèn)使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 20,
                        fontStyle: 'italic'
                    }
                },
                detail : {
                    offsetCenter:[0,'30%'],
                    textStyle: {       // 其余屬性默認(rèn)使用全局文本樣式,詳見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: {            // 坐標(biāo)軸線
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        width: 10,
                        color:[[1, '#91c7ae']],
                    },
                },
                axisTick: {            // 坐標(biāo)軸小標(biāo)記
                    length: 15,        // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle控制線條樣式
                        color: 'auto'
                    }
                },
                splitLine: {           // 分隔線
                    length: 20,         // 屬性length控制線長
                    lineStyle: {       // 屬性lineStyle(詳見lineStyle)控制線條樣式
                        color: 'auto'
                    }
                },
                title : {
                    show:false,
                    textStyle: {       // 其余屬性默認(rèn)使用全局文本樣式,詳見TEXTSTYLE
                        fontWeight: 'bolder',
                        fontSize: 20,
                        fontStyle: 'italic'
                    }
                },
                detail : {
                    offsetCenter:[0,'30%'],
                    textStyle: {       // 其余屬性默認(rèn)使用全局文本樣式,詳見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>
  • 久久亚洲国产精品一区二区 | 午夜精品亚洲一区二区三区嫩草 | 一区二区自拍| 99精品国产在热久久婷婷| 欧美亚洲一区| 精品乱子伦一区二区三区| 久久涩涩网站| 亚洲欧美综合| 久久免费一区| 亚洲第一导航| 亚洲综合丁香| 日韩欧美三级电影| 日韩视频在线播放 | 欧洲精品久久| 在线免费观看欧美| 国产精品入口免费| 一区二区不卡视频| 久久国产精品久久久久久电车 | 久久99精品久久久水蜜桃| 亚洲午夜在线观看| 亚洲欧美日韩视频二区| 日韩精品福利视频| 国产精品推荐精品| 神马影院一区二区三区| 午夜亚洲视频| 中文字幕中文字幕一区三区| 亚洲在线日韩| 最新不卡av| 高清视频在线观看一区| 红桃视频国产精品| 玛丽玛丽电影原版免费观看1977| 91久久夜色精品国产九色| 麻豆成人av| 国产伦精品一区二区三区视频黑人| 欧美一级爽aaaaa大片| 香蕉国产精品偷在线观看不卡| 亚洲韩国在线| 国产一区二区高清视频| 99精品久久久| 永久久久久久| 精品在线视频一区二区三区| 国产视频一区欧美| 欧美视频成人| 亚洲国产精品视频一区| 国产一区不卡在线观看| 亚洲欧美日韩国产一区二区| 韩国一区二区三区在线观看| 人禽交欧美网站免费| 99精彩视频| 亚洲高清在线观看一区| 一区二区日本伦理| 日韩精品av一区二区三区| 国产自产精品| 懂色一区二区三区av片| 老司机一区二区三区| 影音先锋久久精品| 一区不卡视频| 视频一区三区| 日韩高清在线播放| 你懂的视频在线一区二区| 国产一区二区三区色淫影院| 久久久久久久尹人综合网亚洲| 夜夜爽av福利精品导航| 精品动漫av| 日韩午夜av| 欧美久久久久| 欧美国内亚洲| 午夜精品999| 国产综合视频| 国内不卡一区二区三区| 国产一区二区三区自拍| 欧美成人69| 欧美日韩1区2区3区| 午夜精品国产| 亚洲视频碰碰| 一区二区日本视频| 久久国产精品高清| 99久久精品免费看国产一区二区三区| 欧美综合77777色婷婷| 久久久夜夜夜| 国产伦理久久久| 日本一区二区久久精品| 亚洲无玛一区| 好吊色欧美一区二区三区四区| 国精品一区二区| 国产日韩高清一区二区三区在线| 一区二区精品在线观看| 97中文在线观看| 欧美裸体网站| 欧美日韩视频一区二区三区| 日韩亚洲视频在线| 99视频网站| 视频在线精品一区| 亚洲国产精品视频一区| 可以免费看不卡的av网站| 精品在线一区| 国产自产精品| 懂色av一区二区三区在线播放| 免费看国产精品一二区视频| 欧美精品一区二区三区在线看午夜| 亚洲日韩视频| 久久国产精品高清| 欧美日韩在线高清| 久久久噜噜噜久久狠狠50岁| 欧美精品亚洲| 亚洲激情综合| 国产日韩欧美综合精品| 欧美 日韩 国产精品免费观看| 国产精品日韩欧美一区| 精品国产综合区久久久久久| 欧美精品18| 国产精华一区| 欧美午夜不卡| 国产视频99| 亚洲高清在线播放| 麻豆视频成人| 中文亚洲字幕| 香蕉久久免费影视| 国产欧美精品| 亚洲成色最大综合在线| 久久久久久久尹人综合网亚洲| 先锋影音亚洲资源| 99电影在线观看| 亚洲午夜一区| 欧美激情导航| 国产嫩草一区二区三区在线观看| 亚洲高清资源综合久久精品| 久久国产精品一区二区三区 | 久久久水蜜桃av免费网站| 一区二区三区四区免费视频| 99久久久精品免费观看国产| 国产精品大全| 欧洲精品国产| 懂色一区二区三区av片| 怡红院精品视频在线观看极品| 蜜桃传媒视频麻豆一区| 久久精品成人一区二区三区蜜臀| 五月天久久狠狠| 国产另类第一区| 一本色道久久综合| 欧美日韩亚洲国产精品| 蜜桃av久久久亚洲精品| 粉嫩av一区二区三区免费观看| 亚洲午夜精品久久久久久app| 日本在线免费观看一区| 成人做爰66片免费看网站| 欧美三级黄美女| 最新精品视频| 亚洲欧美日韩在线综合| 欧美性xxxx69| 欧美国产一区二区在线| 国产乱码精品一区二区三区不卡| 亚洲尤物精选| 国产伦精品一区二区三区视频黑人 | 在线视频观看日韩| 亚洲精品在线视频观看| 欧美性色黄大片人与善| 久久66热这里只有精品| 国产精选一区二区| 岛国视频一区免费观看| 99精品国产高清在线观看| 亚洲影视在线| 免费看亚洲片| 玖玖视频精品| 97av影视网在线观看| 7777奇米亚洲综合久久| 91久久极品少妇xxxxⅹ软件| 亚洲免费在线| 亚洲欧美日韩综合国产aⅴ| 国产精品日韩精品欧美精品| 国产精品入口66mio| 午夜综合激情| 草莓视频一区| 国产伦精品一区二区三区照片91| 成人区精品一区二区| 国产99在线播放| 国产麻豆乱码精品一区二区三区| 国产另类自拍| 日本不卡高清视频一区| 天天好比中文综合网| 中文字幕一区二区三区在线乱码| 欧美国产91| aa级大片欧美三级| 午夜亚洲性色视频| 国产精品免费在线播放| 久久人人九九| 欧美精品激情| 国产精品一级| 高清免费日韩| 少妇特黄a一区二区三区| 中文字幕日韩精品一区二区| 在线欧美日韩| 久久综合影音| 欧美不卡在线一区二区三区| 亚洲精品在线免费| 亚洲精品欧洲| 国产精品久久久对白| 日韩免费三级| 国产欧美日韩在线播放| 国产伦理久久久|