国产久_亚欧精品一区_久久亚洲美女_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%;
        }
         #toolbar select {
            display: inline-block;
            position: relative;
            background: #303336;
            border: 1px solid #444;
            color: #edffff;
            fill: #edffff;
            border-radius: 4px;
            padding: 5px 12px;
            margin: 2px 3px;
            cursor: pointer;
            overflow: hidden;
            -moz-user-select: none;
            -webkit-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }
        .bmgl-widget-credits{display:none}
    </style>
    <title>part_test</title>
</head>
<body>

<div id='container'></div>
<div id="toolbar">
    <select data-bind="options: options, optionsText: '_text', value: selectedOption,optionsCaption: '選擇相機功能'"></select>
</div>
<script>
    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', {mapId: 'bigemap.dc-tian-w-satellite'});
    var viewModel, rotateEventListener, avaliableOptions,rotateTimer;

    function opt(text, callback) {
        this._text = text;
        this._callback = callback
    }

    viewer.camera.moveStart.addEventListener(function () {
        if (viewModel.checkCamera) {
            viewModel.cameraEventInfo("視角變動開始");
        }
    });
    viewer.camera.moveEnd.addEventListener(function () {
        if (viewModel.checkCamera) {
            viewModel.cameraEventInfo("視角變動結束");
        }
    });
    viewer.camera.changed.addEventListener(function () {
        var p=bmgl.Cartographic.fromCartesian(viewer.camera.position);
        if(p.height<1200000){
           if (rotateEventListener){
               viewer.clock.onTick.removeEventListener(rotateEventListener);
               rotateEventListener=null;
           }
        };
    });
    var flyToLocation = function () {
        var options = {
            enableHighAccuracy: true,
            maximumAge: 1000
        };
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(fly, onError, options); //瀏覽器支持geolocation
        } else {
            //瀏覽器不支持geolocation
        }

        // Create callback for browser's geolocation
        function fly(position) {
            viewer.camera.flyTo({
                destination: bmgl.Cartesian3.fromDegrees(position.coords.longitude, position.coords.latitude, 1000.0)
            });
        }

        //失敗時
        function onError(error) {
            switch (error.code) {
                case 1:
                    alert("位置服務被拒絕");
                    break;
                case 2:
                    alert("暫時獲取不到位置信息");
                    break;
                case 3:
                    alert("獲取信息超時");
                    break;
                case 4:
                    alert("未知錯誤");
                    break;
            }
        }
    };

    var flyToSanDiego = function () {
        viewer.camera.flyTo({
            destination: bmgl.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
        });
    };

    var flyToHeadingPitchRoll = function () {
        viewer.camera.flyTo({
            destination: bmgl.Cartesian3.fromDegrees(-122.22, 46.12, 5000.0),
            orientation: {
                /*弧度*/
                heading: bmgl.Math.toRadians(20.0),
                pitch: bmgl.Math.toRadians(-35.0),
                roll: 0.0
            }
        });
    }

    var viewRectangle = function () {
        var west = -77.0;
        var south = 38.0;
        var east = -72.0;
        var north = 42.0;

        var rectangle = bmgl.Rectangle.fromDegrees(west, south, east, north);
        viewer.camera.setView({
            destination: rectangle
        });

        // Show the rectangle.  Not required; just for show.
        viewer.entities.add({
            rectangle: {
                coordinates: rectangle,
                fill: false,
                outline: true,
                outlineColor: bmgl.Color.WHITE
            }
        });
    }

    var flyToRectangle = function () {
        var west = -90.0;
        var south = 38.0;
        var east = -87.0;
        var north = 40.0;
        var rectangle = bmgl.Rectangle.fromDegrees(west, south, east, north);

        viewer.camera.flyTo({
            destination: rectangle
        });

        // Show the rectangle.  Not required; just for show.
        viewer.entities.add({
            rectangle: {
                coordinates: rectangle,
                fill: false,
                outline: true,
                outlineColor: bmgl.Color.WHITE
            }
        });
    }

    var setReferenceFrame = function () {
        var center = bmgl.Cartesian3.fromDegrees(-75.59777, 40.03883);
        var transform = bmgl.Transforms.eastNorthUpToFixedFrame(center);

        // View in east-north-up frame
        var camera = viewer.camera;
        camera.constrainedAxis = bmgl.Cartesian3.UNIT_Z;
        camera.lookAtTransform(transform, new bmgl.Cartesian3(-120000.0, -120000.0, 120000.0));

        // Show reference frame.  Not required.
        viewer.scene.primitives.add(new bmgl.DebugModelMatrixPrimitive({
            modelMatrix: transform,
            length: 100000.0
        }));
    }

    var setHeadingPitchRoll = function () {
        viewer.camera.setView({
            destination: bmgl.Cartesian3.fromDegrees(-75.5847, 40.0397, 1000.0),
            orientation: {
                heading: -bmgl.Math.PI_OVER_TWO,
                pitch: -bmgl.Math.PI_OVER_FOUR,
                roll: 0.0
            }
        });
    };

    var icrf = function (scene, time) {
        if (scene.mode !== bmgl.SceneMode.SCENE3D) {
            return;
        }
        var icrfToFixed = bmgl.Transforms.computeIcrfToFixedMatrix(time);
        if (bmgl.defined(icrfToFixed)) {
            var camera = viewer.camera;
            var offset = bmgl.Cartesian3.clone(camera.position);
            var transform = bmgl.Matrix4.fromRotationTranslation(icrfToFixed);
            camera.lookAtTransform(transform, offset);
        }
    };

    var viewInICRF = function () {
        var a = viewer.clock.currentTime.secondsOfDay;
        rotateEventListener = function (e) {
            var i = viewer.clock.currentTime.secondsOfDay, t = ((i - a) / 1e3) * 0.4;
            a = i;
            viewer.scene.camera.rotate(bmgl.Cartesian3.UNIT_Z, -1 * t)
        };
        viewer.camera.flyHome(0);
        viewer.clock.multiplier = 200;
        viewer.clock.shouldAnimate = !0;
        viewer.clock.onTick.addEventListener(rotateEventListener);
    };

    var flyInACity = function () {
        viewer.scene.camera.flyTo({
            destination: bmgl.Cartesian3.fromDegrees(-73.98580932617188, 40.74843406689482, 363.34038727246224),
            complete: function () {
                setTimeout(function () {
                    viewer.camera.flyTo({
                        destination: bmgl.Cartesian3.fromDegrees(-73.98585975679403, 40.75759944127251, 186.50838555841779),
                        orientation: {
                            heading: bmgl.Math.toRadians(200.0),
                            pitch: bmgl.Math.toRadians(-50.0)
                        },
                        easingFunction: bmgl.EasingFunction.LINEAR_NONE
                    });
                }, 1000);
            }
        });
    };

    var losAngelesToTokyo = function (adjustPitch) {
        var camera = viewer.scene.camera;

        var tokyoOptions = {
            destination: bmgl.Cartesian3.fromDegrees(139.8148, 35.7142, 20000.0),
            orientation: {
                heading: bmgl.Math.toRadians(15.0),
                pitch: bmgl.Math.toRadians(-60),
                roll: 0.0
            },
            duration: 20,
            flyOverLongitude: bmgl.Math.toRadians(60.0)
        };

        var laOptions = {
            destination: bmgl.Cartesian3.fromDegrees(-117.729, 34.457, 10000.0),
            duration: 5,
            orientation: {
                heading: bmgl.Math.toRadians(-15.0),
                pitch: -bmgl.Math.PI_OVER_FOUR,
                roll: 0.0
            }
        };
        laOptions.complete = function () {
            setTimeout(function () {
                camera.flyTo(tokyoOptions);
            }, 1000);
        };
        if (adjustPitch) {
            tokyoOptions.pitchAdjustHeight = 1000;
            laOptions.pitchAdjustHeight = 1000;
        }
        camera.flyTo(laOptions);
    };

    var flyOverLongitude = function (adjustPitch) {
        losAngelesToTokyo();
    };

    var flyOverLongitudeWithPitch = function () {
        losAngelesToTokyo(true);
    };

    function reset() {
        viewer.entities.removeAll();
        // viewer.scene.primitives.removeAll();
        // viewer.scene.tweens.removeAll();
        viewer.camera.lookAtTransform(bmgl.Matrix4.IDENTITY);
        rotateEventListener&&viewer.clock.onTick.removeEventListener(rotateEventListener);
        viewer.clock.shouldAnimate = 0;
        rotateEventListener = null;
        viewer.scene.preRender.removeEventListener(icrf);
        viewer.scene.globe.enableLighting = false;
    };
    avaliableOptions = [];
    avaliableOptions.push(new opt('飛到一個城市', flyInACity));
    avaliableOptions.push(new opt('飛往圣地亞哥', flyToSanDiego));
    avaliableOptions.push(new opt('飛到有航向、俯仰和滾轉的位置', flyToHeadingPitchRoll));
    avaliableOptions.push(new opt('飛到我的位置', flyToLocation));
    avaliableOptions.push(new opt('飛到矩形', flyToRectangle));
    avaliableOptions.push(new opt('查看矩形', viewRectangle));
    avaliableOptions.push(new opt('設置相機框架', setReferenceFrame));
    avaliableOptions.push(new opt('設置相機的航向、俯仰和滾轉位置', setHeadingPitchRoll));
    avaliableOptions.push(new opt('旋轉球體', viewInICRF));
    avaliableOptions.push(new opt('從洛杉磯經歐洲飛往東京', flyOverLongitude));
    avaliableOptions.push(new opt('在飛行中向下看', flyOverLongitudeWithPitch));
    viewModel = {
        options: avaliableOptions,
        selectedOption: bmgl.knockout.observable(null),
        checkCamera: bmgl.knockout.observable(true),
        cameraEventInfo: bmgl.knockout.observable("")
    };
   
    bmgl.knockout.applyBindings(viewModel, document.getElementById('toolbar'));
    viewModel.selectedOption.subscribe(function (selected) {
        reset();
        selected._callback();
    });
</script>
</body>
</html>                                                                                                                                                                                                                                                                                                                                            
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 三级三级久久三级久久18| av资源站久久亚洲| 免费精品视频一区| 欧美一级播放| 99热精品在线| 亚洲性人人天天夜夜摸| 亚洲国产欧美日韩| 久久精品午夜一区二区福利| 5g国产欧美日韩视频| 嫩草成人www欧美| 欧美另类亚洲| 亚洲一卡二卡三卡| 色吧亚洲视频| 亚洲精品日韩成人| 亚洲一区二区三区加勒比| 欧美日韩精品中文字幕一区二区| 成人91视频| 99视频在线播放| 国产精品久久久久久久久婷婷| 久久久国产亚洲精品| 欧美亚洲免费高清在线观看| 亚洲一区二区精品在线| 国产亚洲精品久久飘花| 国产亚洲欧洲| 久久精品99| 国产精品久久国产精品| 久久99精品久久久久久久青青日本| 国产精品对白刺激久久久| 国产经品一区二区| 久久视频在线观看中文字幕| 国产亚洲欧美一区二区三区| 精品无人区一区二区三区 | 午夜精品国产| 国内精品亚洲| 新67194成人永久网站| 91成人免费视频| 狠狠久久综合婷婷不卡| 日本一区二区三区免费看| 特级西西444www大精品视频| 中国成人在线视频| 亚洲人成久久| 玖玖视频精品| 日本福利一区二区三区| 曰韩不卡视频| 亚洲免费影视| 久热这里只精品99re8久| 亚洲欧美日韩另类精品一区二区三区| 中文字幕一区二区中文字幕| 欧美日韩精品免费看| 日韩一区二区免费看| 国产精品一区二区三区不卡| 欧美不卡三区| 亚洲国产片色| 成人片在线免费看| 日韩精品久久久毛片一区二区| 尤物国产精品| 久久精品伊人| 亚洲欧美日韩另类精品一区二区三区 | 亚洲一区精彩视频| 亚洲欧美日韩综合国产aⅴ| 精品久久精品久久| 欧美日韩一区在线观看视频| 久久久国产精品一区二区三区| 久久偷看各类wc女厕嘘嘘偷窃 | 久久精品人人做人人爽电影蜜月| 国精产品99永久一区一区| 欧美国产日本| 国产成人av一区二区三区| 在线视频不卡一区二区| 精品欧美国产| 欧美日韩一区二区三区在线观看免| 国产精品免费一区二区三区在线观看 | 国产综合色一区二区三区| 老牛嫩草一区二区三区日本| 亚洲精品中字| 国产精品一区二区三区免费| 国内精品久久久久久久97牛牛| 国产乱码一区| 夜夜爽av福利精品导航| 青青草成人激情在线| 久久成人精品| 国产精品hd| 日韩精品福利视频| 高清视频一区| 国产欧美日韩一区二区三区在线| 日韩一区二区电影在线观看| 久久久天天操| 亚洲国产三级| 亚洲精品电影在线一区| 国产无套精品一区二区| 国产一区二区三区成人欧美日韩在线观看| 狠狠色综合色区| 国产一区二区三区的电影| 国产综合亚洲精品一区二| 欧美午夜欧美| 精品国产_亚洲人成在线| 久久男女视频| 国产精品一页| 亚洲激情一区二区三区| 午夜精品影院| 一本一本a久久| 欧美一区二区三区四区在线观看地址| 久久蜜桃精品| 亚洲一区欧美激情| 亚洲茄子视频| 一区二区自拍| 激情久久一区| 欧美先锋影音| 国产在线视频欧美一区二区三区| 日韩欧美第二区在线观看| 久久国产精品-国产精品| 国产美女精品久久久| 国产精品国产三级国产专区53 | 亚洲一区国产| 国产精品日韩高清| 国产精品一级| 亚洲一区三区电影在线观看| 亚洲美女一区| 国产精品视频福利| 免费看的黄色欧美网站| 久久精品国产综合精品| 国产精品免费一区二区三区在线观看 | 欧美日韩最好看的视频| 欧美日韩精品免费看| 日韩欧美三级电影| 亚洲一区二区三区在线观看视频| 在线高清一区| 狠狠噜噜久久| 亚洲三级影院| 久久狠狠婷婷| 国产一区免费在线| 欧美成人蜜桃| 先锋在线资源一区二区三区| 亚洲一区二区自拍偷拍| 欧美午夜不卡| 亚洲一级在线| caoporn国产精品免费公开| 国产午夜精品在线| 亚洲美女搞黄| 亚洲黄色成人| 91精品网站| 欧美一区视久久| 国产精品theporn| 国产模特精品视频久久久久| 肥熟一91porny丨九色丨| 品久久久久久久久久96高清| 欧美精品成人一区二区在线观看| 亚洲欧洲综合| 国产免费一区二区| 中文字幕欧美人与畜| 国产欧美日韩在线播放| 国产一区二区三区免费不卡| 日本一区二区免费看| 亚洲国产一区二区精品专区| 久久九九国产| 色噜噜一区二区| 亚洲茄子视频| 精品国产综合区久久久久久| 欧美黄在线观看| 玖玖国产精品视频| 欧美在线黄色| 久久精品系列| 午夜精品亚洲一区二区三区嫩草| 男人天堂欧美日韩| 先锋影音一区二区三区| 国产偷自视频区视频一区二区| 精品国产综合久久| 一区在线免费观看| 久久伊人资源站| 亚洲激情影院| 日韩黄色影视| 玖玖在线精品| 国内不卡一区二区三区| 精品国产乱码一区二区三区四区 | 99久久99久久精品国产片| 亚洲国产精品视频一区| 狂野欧美一区| 国产一区二区无遮挡| 九九九久久久| 亚洲综合99| 欧美天堂亚洲电影院在线观看 | 亚洲国产日韩综合一区| 99re资源| 一区二区三区四区五区在线| 日本精品一区二区三区视频 | 5g影院天天爽成人免费下载| 欧美另类高清视频在线| 欧美 日韩 国产在线| 亚洲永久视频| 黄色亚洲免费| 色一情一乱一伦一区二区三区丨| 狂野欧美一区| 国产一区二区黄色| 亚洲一级一区| 一本一本a久久| 欧美中日韩一区二区三区| 久久一区二区三区av| 在线亚洲观看| 亚洲二区三区四区| 欧美aa国产视频|