国产久_亚欧精品一区_久久亚洲美女_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>
    <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;
            padding:14px;
            margin: 0;
            background-color: #fcf8e3;
            border-color: #faebcc;
            left: 0;
            right: 0;
            text-align: center;
        }
    </style>
    <title>模擬飛行</title>
</head>
<body>
<div class="info">
    使用方向鍵控制飛行 “←” 向左飛行,“→”:向右飛行,“↑” 升高,“↓” 下降,若控制失效,請單擊本處獲得焦點
</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',
        requestRenderMode:false,
        mapId: 'bigemap.dc-tian-w-satellite',
        shouldAnimate:true,
    });
    viewer.scene.globe.depthTestAgainstTerrain=true;
      viewer.screenSpaceEventHandler.removeInputAction(bmgl.ScreenSpaceEventType.LEFT_CLICK);
      
    var canvas = viewer.canvas;
    canvas.setAttribute("tabindex", "0"); 
    canvas.addEventListener("click", function () {
        canvas.focus();
    });
    canvas.focus();
    var config = {
        init: {
            lat: 30.950543,
            lng: 103.0004609201,
            height: 4000,
        },
        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),
        endTransform: bmgl.Matrix4.IDENTITY,
    });
    var plane = viewer.entities.add({
        position: bmgl.Cartesian3.fromDegrees(config.init.lng, config.init.lat, config.init.height),
        orientation: bmgl.Transforms.headingPitchRollQuaternion(bmgl.Cartesian3.fromDegrees(config.position.lng, config.position.lat, config.position.height), new bmgl.HeadingPitchRoll(config.angle.left-90, 0, 0)),
        model: {
            maximumScale: 2000,
            minimumPixelSize: 300,
            uri: '/templates/glb/bmgl_Air.glb',
        }
    });

    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){
                if (!config.position.oldHeight) config.position.oldHeight=config.position.height;
                config.position.height=data['0']['height']+100;
            }
            config.requireHeight=true;
        }).otherwise(()=>{
            config.requireHeight=true;
        });
    }
  

    viewer.trackedEntity = plane;
    viewer.clock.onTick.addEventListener(function (e) {
        getHeight();
        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;
        }
        plane.position = bmgl.Cartesian3.fromDegrees(config.position.lng, config.position.lat, config.position.height);
        plane.orientation=bmgl.Transforms.headingPitchRollQuaternion(bmgl.Cartesian3.fromDegrees(config.position.lng, config.position.lat, config.position.height), new bmgl.HeadingPitchRoll.fromDegrees(config.angle.left-90, config.angle.p,config.angle.r));
    });

    document.addEventListener('keydown', function (e) {
        config.keydown=true;
        switch (e.keyCode) {
            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;
    });
</script>
</body>
</html>
                                                                                                                                                                                                                                                                                                                                                                                                                    
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 亚洲欧美伊人| 久久精品欧美| 免费亚洲一区二区| 51成人做爰www免费看网站| 午夜日韩电影| 亚洲美女搞黄| 欧美日本韩国一区二区三区| 久久久久国产一区二区| 亚洲巨乳在线| 国产一区二区三区四区三区四| 欧美另类一区| 国产日韩亚洲精品| 91福利入口| **亚洲第一综合导航网站 | 激情欧美日韩一区| 国产精品一区视频网站| av日韩中文字幕| 国产精品久久久一区二区| 久久国产主播| 国产精品一区二区av| 2022国产精品| 欧美在线日韩| 欧美另类一区| 国产在线精品二区| 国产自产精品| 精品不卡一区二区三区| 免费看亚洲片| 久久久久久一区| 久色成人在线| 国产一区二区三区无遮挡| 国产视频一区二区不卡| 久久久久网址| 亚洲成人自拍| 欧美精品二区| 一区二区三区四区五区精品视频| 一区二区黄色| 999在线观看免费大全电视剧| 91精品久久久久久蜜桃| 国产一区二区三区奇米久涩| 久久99精品久久久久久久青青日本| 免费看污久久久| 亚洲永久激情精品| 在线日韩中文| 久久伊人亚洲| 免费毛片一区二区三区久久久| 深夜福利成人| 一级日韩一区在线观看| 玖玖国产精品视频| 日本欧美精品久久久| 欧美日韩亚洲一区二区三区在线观看| 精久久久久久| 快she精品国产999| 日韩激情久久| 国产视频在线观看一区| 粉嫩av免费一区二区三区| 欧美日韩一区二区三| 国产综合18久久久久久| 91嫩草国产在线观看| 日韩电影天堂视频一区二区| 国产精品v欧美精品v日韩精品| 国产精品五区| 日韩精品一区二区三区丰满| 亚洲精品在线二区| 成人蜜桃视频| 国产一区二区三区四区hd| 91九色对白| 午夜精品亚洲一区二区三区嫩草| 亚洲一区自拍| 亚洲狠狠婷婷综合久久久| 亚洲精品系列| 欧美一区观看| 麻豆精品91| 欧美在线首页| 国产亚洲精品自在久久| 很黄很黄激情成人| 蜜桃av久久久亚洲精品| 国产精品免费区二区三区观看| 黑丝一区二区| 日本免费一区二区三区| 久久久久久一区二区| 欧美福利专区| 久久大片网站| 香蕉成人久久| 欧美日韩在线一区二区三区| 久久久久网址| 91免费在线观看网站| 精品成人久久| 一区二区在线不卡| 激情小说综合区| 欧美中文日韩| 亚洲人www| 欧美三区不卡| 色视频一区二区三区| 国产在线一区二区三区播放| 亚洲一区二区三区免费在线观看| 亚洲精品一区二区三区樱花 | 欧美88av| 欧洲精品在线一区| 国产欧美韩日| 久久久亚洲一区| 国产精品久久久一区二区| 欧美日韩亚洲一区| 亚洲国产一区二区精品视频 | 成人影片在线播放| 鲁大师成人一区二区三区| 黑丝一区二区| 欧美日韩亚洲国产精品| 你懂的网址国产 欧美| 日韩.欧美.亚洲| 日本成人看片网址| 极品校花啪啪激情久久| 国产麻豆日韩| 国产精品区一区二区三在线播放 | 欧美另类视频| 欧美日韩国产综合在线| 中文字幕一区二区三区四区五区 | 精品免费国产| 精品一区国产| 免费试看一区| 亚洲ai欧洲av| 五月天亚洲综合| 国产一区二区三区高清| 激情久久婷婷| 国产区日韩欧美| 一区二区三区福利| 久久久久久九九九九| 91九色偷拍| 国产一区二区视频在线免费观看| 国产精品露出视频| 欧美激情国产日韩| 性欧美精品一区二区三区在线播放| 日韩欧美精品久久| 欧美黄色aaaa| 日韩午夜精品| 97久草视频| 久久亚洲一区二区| 亚洲亚洲精品三区日韩精品在线视频| 中文字幕色一区二区| 一区二区三区欧美成人| 97人人干人人| 日本一区二区免费看| 欧美大片专区| 欧美专区在线| 久久日韩精品| 欧美日韩亚洲国产精品| 国产精品腿扒开做爽爽爽挤奶网站| 久久大逼视频| 欧美日韩在线高清| 午夜激情一区| 久久精品天堂| 日韩久久久久久久| 伊人久久大香线蕉综合热线 | 欧美日韩91| 亚洲免费一区二区| 久久福利电影| 国模精品一区二区三区| 久久青草久久| 视频在线99re| 日韩视频精品在线观看| 成人激情直播| 致1999电视剧免费观看策驰影院| 一本色道久久综合亚洲精品不卡 | 免费中文日韩| 激情文学一区| 国产一区二区三区四区五区在线| 亚洲精品在线观看免费| 免费永久网站黄欧美| 色播亚洲婷婷| 亚洲女优在线| 一区二区三区三区在线| 久久精品女人的天堂av| 色综合久久av| 久久福利毛片| 欧美成人一区二免费视频软件| 久久久精品动漫| 正义之心1992免费观看全集完整版| 亚洲综合99| 国产精品videosex极品| 麻豆成人在线播放| 中文日韩欧美| 欧美黄在线观看| 久久精品ww人人做人人爽| 9色精品在线| 亚洲一区三区视频在线观看| 97超级碰碰| 亚洲精品日韩久久| 一区二区在线观| 蜜桃传媒视频第一区入口在线看| 日韩一级在线| 欧美在线二区| 日韩欧美视频一区二区三区四区 | 亚洲午夜激情| 亚洲欧洲另类精品久久综合| 99re视频在线观看| 国产精品色网| 亚洲三级观看| 国产一区二区三区四区老人| 亚洲免费视频一区| 久久日韩精品| 精品久久一区二区三区蜜桃|