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

顯示源代碼
鍵盤控制方向
 開發文檔
            <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link  rel='stylesheet' />
    <script src='http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js'></script>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    #container {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
    }

    #toolbar {
        position: absolute;
        background-color: white;
        opacity: .7;
    }
</style>

<body>
    <div id="container"></div>
    <div id="loadingOverlay">
        <h1>Loading...</h1>
    </div>
    <div id="toolbar">
        <table class="infoPanel">
            <tbody>
                <tr>
                    <td>
                       單擊bmgl窗口,然后使用鍵盤更改設置。
                    </td>
                </tr>
                <tr>
                    <td>頭部: <span id="heading"></span>°</td>
                </tr>
                <tr>
                    <td>← to 左/→ to 右</td>
                </tr>
                <tr>
                    <td>身體部分: <span id="pitch"></span>°</td>
                </tr>
                <tr>
                    <td>↑ to 上/↓ to 下</td>
                </tr>
                <tr>
                    <td>滾動: <span id="roll"></span>°</td>
                </tr>
                <tr>
                    <td>← + ? left/→ + ? right</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
<script>

    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', { mapId: 'bigemap.dc-tian-w-satellite',requestRenderMode:false });
    var canvas = viewer.canvas;
    canvas.setAttribute("tabindex", "0"); // needed to put focus on the canvas
    canvas.addEventListener("click", function () {
        canvas.focus();
    });
    canvas.focus();

    var scene = viewer.scene;
    var camera = viewer.camera;
    var controller = scene.screenSpaceCameraController;
    var r = 0;
    var center = new bmgl.Cartesian3();

    var hpRoll = new bmgl.HeadingPitchRoll();
    var hpRange = new bmgl.HeadingPitchRange();
    var deltaRadians = bmgl.Math.toRadians(1.0);

    var localFrames = [
        {
            pos: bmgl.Cartesian3.fromDegrees(-123.075, 44.045, 5000.0),
            converter: bmgl.Transforms.eastNorthUpToFixedFrame,
            comments: "東北向上\nlocal Frame",
        },
        {
            pos: bmgl.Cartesian3.fromDegrees(-123.075, 44.05, 5500.0),
            converter: bmgl.Transforms.localFrameToFixedFrameGenerator(
                "north",
                "west"
            ),
            comments: "西北向上\nlocal Frame",
        },
        {
            pos: bmgl.Cartesian3.fromDegrees(-123.075, 44.04, 4500.0),
            converter: bmgl.Transforms.localFrameToFixedFrameGenerator(
                "south",
                "up"
            ),
            comments: "南上西\nlocal Frame",
        },
        {
            pos: bmgl.Cartesian3.fromDegrees(-123.075, 44.05, 4500.0),
            converter: bmgl.Transforms.localFrameToFixedFrameGenerator(
                "up",
                "east"
            ),
            comments: "上 東 北\nlocal Frame",
        },
        {
            pos: bmgl.Cartesian3.fromDegrees(-123.075, 44.04, 5500.0),
            converter: bmgl.Transforms.localFrameToFixedFrameGenerator(
                "down",
                "east"
            ),
            comments: "東南下方\nlocal Frame",
        },
    ];

    var primitives = [];
    var hprRollZero = new bmgl.HeadingPitchRoll();

    for (var i = 0; i < localFrames.length; i++) {
        var position = localFrames[i].pos;
        var converter = localFrames[i].converter;
        var comments = localFrames[i].comments;
        var planePrimitive = scene.primitives.add(
            bmgl.Model.fromGltf({
                url: "/templates/glb/bmgl_Air.glb",
                modelMatrix: bmgl.Transforms.headingPitchRollToFixedFrame(
                    position,
                    hpRoll,
                    bmgl.Ellipsoid.WGS84,
                    converter
                ),
                minimumPixelSize: 128,
            })
        );

        primitives.push({
            primitive: planePrimitive,
            converter: converter,
            position: position,
        });
        var modelMatrix = bmgl.Transforms.headingPitchRollToFixedFrame(
            position,
            hprRollZero,
            bmgl.Ellipsoid.WGS84,
            converter
        );
        scene.primitives.add(
            new bmgl.DebugModelMatrixPrimitive({
                modelMatrix: modelMatrix,
                length: 300.0,
                width: 10.0,
            })
        );

        var positionLabel = position.clone();
        positionLabel.z = position.z + 300.0;
        viewer.entities.add({
            position: positionLabel,
            label: {
                text: comments,
                font: "18px Helvetica",
                fillColor: bmgl.Color.WHITE,
                outlineColor: bmgl.Color.BLACK,
                outlineWidth: 2,
                style: bmgl.LabelStyle.FILL_AND_OUTLINE,
                verticalOrigin: bmgl.VerticalOrigin.CENTER,
                HorizontalOrigin: bmgl.HorizontalOrigin.RIGHT,
            },
        });
    }

    primitives[0].primitive.readyPromise.then(function (model) {
        // Play and loop all animations at half-speed
        model.activeAnimations.addAll({
            multiplier: 0.5,
            loop: bmgl.ModelAnimationLoop.REPEAT,
        });

        // Zoom to model
        r = 2.0 * Math.max(model.boundingSphere.radius, camera.frustum.near);
        controller.minimumZoomDistance = r * 0.5;
        bmgl.Matrix4.multiplyByPoint(
            model.modelMatrix,
            model.boundingSphere.center,
            center
        );
        var heading = bmgl.Math.toRadians(90.0);
        var pitch = bmgl.Math.toRadians(0.0);
        hpRange.heading = heading;
        hpRange.pitch = pitch;
        hpRange.range = r * 100.0;
        camera.lookAt(center, hpRange);
    });

    document.addEventListener("keydown", function (e) {
        switch (e.keyCode) {
            case 40:
                // pitch down
                hpRoll.pitch -= deltaRadians;
                if (hpRoll.pitch < -bmgl.Math.TWO_PI) {
                    hpRoll.pitch += bmgl.Math.TWO_PI;
                }
                break;
            case 38:
                // pitch up
                hpRoll.pitch += deltaRadians;
                if (hpRoll.pitch > bmgl.Math.TWO_PI) {
                    hpRoll.pitch -= bmgl.Math.TWO_PI;
                }
                break;
            case 39:
                if (e.shiftKey) {
                    // roll right
                    hpRoll.roll += deltaRadians;
                    if (hpRoll.roll > bmgl.Math.TWO_PI) {
                        hpRoll.roll -= bmgl.Math.TWO_PI;
                    }
                } else {
                    // turn right
                    hpRoll.heading += deltaRadians;
                    if (hpRoll.heading > bmgl.Math.TWO_PI) {
                        hpRoll.heading -= bmgl.Math.TWO_PI;
                    }
                }
                break;
            case 37:
                if (e.shiftKey) {
                    // roll left until
                    hpRoll.roll -= deltaRadians;
                    if (hpRoll.roll < 0.0) {
                        hpRoll.roll += bmgl.Math.TWO_PI;
                    }
                } else {
                    // turn left
                    hpRoll.heading -= deltaRadians;
                    if (hpRoll.heading < 0.0) {
                        hpRoll.heading += bmgl.Math.TWO_PI;
                    }
                }
                break;
            default:
        }
    });

    var headingSpan = document.getElementById("heading");
    var pitchSpan = document.getElementById("pitch");
    var rollSpan = document.getElementById("roll");

    viewer.scene.preUpdate.addEventListener(function (scene, time) {
        for (var i = 0; i < primitives.length; i++) {
            var primitive = primitives[i].primitive;
            var converter = primitives[i].converter;
            var position = primitives[i].position;
            bmgl.Transforms.headingPitchRollToFixedFrame(
                position,
                hpRoll,
                bmgl.Ellipsoid.WGS84,
                converter,
                primitive.modelMatrix
            );
        }
    });

    viewer.scene.preRender.addEventListener(function (scene, time) {
        headingSpan.innerHTML = bmgl.Math.toDegrees(hpRoll.heading).toFixed(
            1
        );
        pitchSpan.innerHTML = bmgl.Math.toDegrees(hpRoll.pitch).toFixed(1);
        rollSpan.innerHTML = bmgl.Math.toDegrees(hpRoll.roll).toFixed(1);
    });


</script>

</html>                                                                                                                                                                                                                                                                                                        
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 国产精品草草| 欧美成人一区二区在线| 亚洲一区二区免费视频软件合集| **亚洲第一综合导航网站 | 国产精品亚洲欧美| 自拍偷拍一区二区三区| 日本成人黄色| 日本欧美精品久久久| 国产一区自拍视频| 成人自拍爱视频| 鲁大师成人一区二区三区| 亚洲日本激情| 日韩午夜视频在线观看| 国内激情久久| 影院欧美亚洲| 亚洲伦伦在线| av成人毛片| 国产欧美日韩综合一区在线观看| 亚洲亚洲精品三区日韩精品在线视频| 制服诱惑一区| 亚洲午夜精品一区二区三区| 亚洲国产欧美日韩| 一区二区三区四区国产| 亚洲一区二区三区加勒比| 欧美日韩一区在线观看视频| 欧美一区二区三区四区夜夜大片| 美乳视频一区二区| 清纯唯美一区二区三区| 性欧美videosex高清少妇| 亚洲国产一区二区精品视频| 在线观看精品视频| 羞羞答答国产精品www一本| 一区二区三区四区五区视频 | 欧美日韩大片一区二区三区 | 午夜在线播放视频欧美| 国产日韩高清一区二区三区在线| 国产日韩欧美一区二区| 蜜桃久久av| 免费精品视频一区| 在线看视频不卡| 一区二区亚洲| 99精品欧美一区二区三区| 国产一区二区三区高清视频| 欧美三级电影在线播放| 中文字幕剧情在线观看一区| 亚洲午夜精品久久久久久浪潮 | 欧美成人一区二免费视频软件| 欧美婷婷久久| 狼狼综合久久久久综合网| 精品久久久三级| 中文字幕一区二区三区在线乱码| 欧美日韩国产在线一区| 亚洲免费综合| 日韩免费中文专区| 亚洲国产欧美日韩| 精品国产福利| 一区三区视频| 精品视频高清无人区区二区三区| 天堂社区 天堂综合网 天堂资源最新版 | 极品日韩久久| 亚洲高清在线观看一区| 含羞草久久爱69一区| 成人资源视频网站免费| 污视频在线免费观看一区二区三区 | 国产富婆一区二区三区| 欧美国产91| 国产成人免费观看| 午夜精品久久久久99热蜜桃导演| 久久久久久久久久久久久久一区| 欧美日韩亚洲一区二区三区在线观看| 精品成人在线| 日本一区二区三区在线视频| 国产亚洲在线观看| 污视频在线免费观看一区二区三区 | 天堂社区 天堂综合网 天堂资源最新版 | 日韩欧美激情一区二区| 亚洲一区二三| 欧美777四色影| 草莓视频一区| 亚洲成色精品| 亚洲成人第一| 国产精品18毛片一区二区| 国产自产在线视频一区| 免费看污久久久| 国产欧美一区二区色老头| 在线一区日本视频| 99久久精品无码一区二区毛片 | 午夜老司机精品| 国产chinese精品一区二区| 国产精品v欧美精品v日韩| 麻豆av一区| 操人视频欧美| 裸体一区二区| 99成人在线| 欧美一区高清| 午夜精品一区二区三区在线观看| 91久色国产| 久久青青草原一区二区| 亚洲国产日韩欧美| 欧美成人一区二免费视频软件| 欧美国产综合视频| 久久riav二区三区| 国产日韩欧美二区| 成人免费在线一区二区三区| 国产日韩欧美| 亚洲一区不卡| 亚洲综合丁香| 在线视频免费在线观看一区二区| 欧美日韩国产综合网| 在线视频不卡国产| 在线亚洲美日韩| 女生裸体视频一区二区三区| 亚洲成人自拍视频| 五月天久久综合网| 亚洲免费久久| 欧美高清不卡| 亚洲国内欧美| 国产日韩精品视频一区二区三区| 激情久久综合| 国产亚洲毛片在线| 蜜乳av另类精品一区二区| 麻豆成人av| 国产精品大全| 美乳视频一区二区| 亚洲高清视频在线观看| 一区二区三区欧美成人| 欧美日本韩国在线| 一区二区三区偷拍| 久久综合狠狠综合久久综青草| 91久久久一线二线三线品牌| 国产伦精品一区二区三区照片91| 国产精品久久久久久久免费大片| 激情视频一区二区| 日韩欧美精品在线不卡| 欧美在线高清| 日韩亚洲国产欧美| 91免费看蜜桃| 欧美日韩高清免费| 欧美精品一卡| 亚洲欧美日韩一区在线观看| 99久久无色码| 日韩精品一区二区三区丰满| 欧美xxx在线观看| 亚洲国产精品久久久久久女王| 国产亚洲在线| 美女精品国产| 亚洲午夜一级| 成人资源av| 欧美日韩岛国| 久久婷婷丁香| 亚洲精品乱码视频| 国产一区二区你懂的| 精品国产一区二区三区久久久久久| 亚洲 国产 日韩 综合一区| 伊人久久亚洲影院| 国产日韩一区欧美| 欧美日本不卡高清| wwwxx欧美| 一区二区三区av| 91久久精品一区二区别| 日韩欧美亚洲v片| 奶水喷射视频一区| 亚洲第一在线综合在线| 久久国产成人| 午夜性色一区二区三区免费视频| 亚洲一区精品视频| 亚洲国产午夜伦理片大全在线观看网站 | 99视频免费观看蜜桃视频| 视频在线精品一区| 日韩免费av一区二区三区| 在线 亚洲欧美在线综合一区| 国产成人精品日本亚洲11| 欧美日韩一区二区三| 国产一级二级三级精品| 亚洲一级黄色| 日本在线观看一区| 2022国产精品| 精品成人免费| 午夜精品一区二区三区四区 | 久久综合久久综合这里只有精品| 亚洲国产日韩欧美| 国产女主播一区二区| 亚洲免费大片| 欧美在线资源| 清纯唯美一区二区三区| 2019国产精品视频| 日韩亚洲在线| 欧美视频导航| 丝袜美腿玉足3d专区一区| 99r国产精品视频| 国产精品久久波多野结衣| 色噜噜一区二区| 黄色小网站91| 懂色中文一区二区三区在线视频| 亚洲国产婷婷| 韩国一区二区三区在线观看| 无遮挡亚洲一区| 青娱乐一区二区| 麻豆精品视频| 久久99精品国产99久久|