顯示源代碼
                模擬飛行-第一視角
                 開發(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-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控制線長(zhǎng)
                                    lineStyle: {       // 屬性lineStyle控制線條樣式
                                        color: 'auto'
                                    }
                                },
                                splitLine: {           // 分隔線
                                    length:20,         // 屬性length控制線長(zhǎng)
                                    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控制線長(zhǎng)
                                    lineStyle: {       // 屬性lineStyle控制線條樣式
                                        color: 'auto'
                                    }
                                },
                                splitLine: {           // 分隔線
                                    length: 20,         // 屬性length控制線長(zhǎng)
                                    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控制線長(zhǎng)
                                    lineStyle: {       // 屬性lineStyle控制線條樣式
                                        color: 'auto'
                                    }
                                },
                                splitLine: {           // 分隔線
                                    length: 20,         // 屬性length控制線長(zhǎng)
                                    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>                                                                                                                                                                                                                                
                主站蜘蛛池模板: 欧美日韩色黄大片在线视频| 韩国演艺圈悲惨133bd| 成在人线av无码免费高潮水| 亚洲成a人一区二区三区| 美女扒开尿口让男生捅| 国产无套乱子伦精彩是白视频 | 美国式禁忌23| 国产欧美一区二区三区免费| 99香蕉国产精品偷在线观看 | 18videosex性欧美69免费播放| 性欧美wideos| 久久国产精品一国产精品 | 一区二区视频免费观看| 日韩一卡二卡三卡四卡| 亚洲欧洲日本在线观看| 精品久久久久中文字幕一区| 国产免费啪嗒啪嗒视频看看| 14萝自慰专用网站| 天堂а√8在线最新版在线| 中文字幕久久久人妻无码| 日韩精品极品视频在线观看免费 | 翁情难自禁无删减版电影| 国产爆乳无码一区二区麻豆| 99久久精品这里只有精品| 成人免费视频观看无遮挡| 久久无码人妻一区二区三区 | 欧美va在线播放免费观看| 交性大片欧美网| 网址在线观看你懂的| 国产寡妇偷人在线观看视频| 18女人水真多免费高清毛片| 在线视频免费观看www动漫| 一本色道无码不卡在线观看| 日日噜噜噜夜夜爽爽狠狠| 九九免费久久这里有精品23| 欧美日韩亚洲无线码在线观看| 伊人色综合视频一区二区三区| 美女和男生一起差差差| 国产亚洲美女精品久久久2020| 国产免费的野战视频| 国产精品嫩草影院线路|