BIGEMAP卫星地图_高清卫星地图_北斗高清地图_地图软件_矢量地图数据_专题地图

顯示源代碼
飛行的熱氣球
 開發文檔
            <!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%;
    }
</style>

<body>
    <div id="container"></div>
    <div id="loadingOverlay">
        <h1>Loading...</h1>
    </div>
</body>
<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',
        vrButton: true,
    });

    // Click the VR button in the bottom right of the screen to switch to VR mode.

    viewer.scene.globe.enableLighting = true;
    viewer.scene.globe.depthTestAgainstTerrain = true;

    // Follow the path of a plane. See the interpolation Sandcastle example.
    bmgl.Math.setRandomNumberSeed(3);

    var start = bmgl.JulianDate.fromDate(new Date(2015, 2, 25, 16));
    var stop = bmgl.JulianDate.addSeconds(
        start,
        360,
        new bmgl.JulianDate()
    );

    viewer.clock.startTime = start.clone();
    viewer.clock.stopTime = stop.clone();
    viewer.clock.currentTime = start.clone();
    viewer.clock.clockRange = bmgl.ClockRange.LOOP_STOP;
    viewer.clock.multiplier = 1.0;
    viewer.clock.shouldAnimate = true;

    function computeCirclularFlight(lon, lat, radius) {
        var property = new bmgl.SampledPositionProperty();
        var startAngle = bmgl.Math.nextRandomNumber() * 360.0;
        var endAngle = startAngle + 360.0;

        var increment =
            (bmgl.Math.nextRandomNumber() * 2.0 - 1.0) * 10.0 + 45.0;
        for (var i = startAngle; i < endAngle; i += increment) {
            var radians = bmgl.Math.toRadians(i);
            var timeIncrement = i - startAngle;
            var time = bmgl.JulianDate.addSeconds(
                start,
                timeIncrement,
                new bmgl.JulianDate()
            );
            var position = bmgl.Cartesian3.fromDegrees(
                lon + radius * 1.5 * Math.cos(radians),
                lat + radius * Math.sin(radians),
                bmgl.Math.nextRandomNumber() * 500 + 1800
            );
            property.addSample(time, position);
        }
        return property;
    }

    var longitude = 104.111;
    var latitude = 31.1110;
    var radius = 0.03;

    var modelURI =
        "/templates/glb/bmglBalloon.glb";
    var entity = viewer.entities.add({
        availability: new bmgl.TimeIntervalCollection([
            new bmgl.TimeInterval({
                start: start,
                stop: stop,
            }),
        ]),
        position: computeCirclularFlight(longitude, latitude, radius),
        model: {
            uri: modelURI,
            minimumPixelSize: 64,
        },
    });

    entity.position.setInterpolationOptions({
        interpolationDegree: 2,
        interpolationAlgorithm: bmgl.HermitePolynomialApproximation,
    });

    // Set initial camera position and orientation to be when in the model's reference frame.
    var camera = viewer.camera;
    camera.position = new bmgl.Cartesian3(0.25, 0.0, 0.0);
    camera.direction = new bmgl.Cartesian3(1.0, 0.0, 0.0);
    camera.up = new bmgl.Cartesian3(0.0, 0.0, 1.0);
    camera.right = new bmgl.Cartesian3(0.0, -1.0, 0.0);

    viewer.scene.postUpdate.addEventListener(function (scene, time) {
        var position = entity.position.getValue(time);
        if (!bmgl.defined(position)) {
            return;
        }

        var transform;
        if (!bmgl.defined(entity.orientation)) {
            transform = bmgl.Transforms.eastNorthUpToFixedFrame(position);
        } else {
            var orientation = entity.orientation.getValue(time);
            if (!bmgl.defined(orientation)) {
                return;
            }

            transform = bmgl.Matrix4.fromRotationTranslation(
                bmgl.Matrix3.fromQuaternion(orientation),
                position
            );
        }

        // Save camera state
        var offset = bmgl.Cartesian3.clone(camera.position);
        var direction = bmgl.Cartesian3.clone(camera.direction);
        var up = bmgl.Cartesian3.clone(camera.up);

        // Reset the camera state to the saved state so it appears fixed in the model's frame.
        bmgl.Cartesian3.clone(offset, camera.position);
        bmgl.Cartesian3.clone(direction, camera.direction);
        bmgl.Cartesian3.clone(up, camera.up);
        bmgl.Cartesian3.cross(direction, up, camera.right);
    });
    //設置相機位置 
    viewer.camera.setView( {
        destination  : bmgl.Cartesian3.fromDegrees( 104.153, 31.089, 30000 )
    } );

    // Add a few more balloons flying with the one the viewer is in.
    var numBalloons = 12;
    for (var i = 0; i < numBalloons; ++i) {
        var balloonRadius =
            (bmgl.Math.nextRandomNumber() * 2.0 - 1.0) * 0.01 + radius;
        var balloon = viewer.entities.add({
            availability: new bmgl.TimeIntervalCollection([
                new bmgl.TimeInterval({
                    start: start,
                    stop: stop,
                }),
            ]),
            position: computeCirclularFlight(
                longitude,
                latitude,
                balloonRadius
            ),
            model: {
                uri: modelURI,
                minimumPixelSize: 64,
            },
        });

        balloon.position.setInterpolationOptions({
            interpolationDegree: 2,
            interpolationAlgorithm: bmgl.HermitePolynomialApproximation,
        });
    }


</script>

</html>                                                                                                                                                                                                                                
主站蜘蛛池模板: 集装箱零配件_不锈钢丝绳厂家_镀锌铁链条_合页非标件定制_上海英鑫多实业有限公司 | 联系我们果博东方在线开户客服电话:19038688886 - 黑龙江旺广机械设备有限公司 | 合金锤头_破碎机锤头_耐磨锤头_巩义市东辰铸造 高耐磨合金锤头厂家 | 沈阳机电一体化电热锅炉_沈阳蓄热式电锅炉_沈阳壁挂式电锅炉【沈阳远鹏电热供水设备工程安装有限公司】 | 双效-多效-三效-废水-污水蒸发器_离心喷雾-污泥干燥机_蒸发浓缩器【天辰环保 】 | 箱式电炉,箱式烧结炉,箱式马弗炉,箱式实验炉,高温箱式电阻炉,箱式加热炉,箱式退火炉,箱式真空气氛炉洛阳研博炉业有限公司 | 拉力试验机|电子万能试验机|液压万能试验机|摩擦磨损试验机|济南试验机厂家-济南思达测试技术有限公司 | 浙江世杰阀门有限公司| 信管飞软件官网 - 亚拓软件旗下精细化管理软件、进销存管理软件、混凝土ERP、通风设备ERP、风管报价软件、出纳软件、送货单打印软件、ERP软件等免费下载 | 智能锁十大品牌_指纹锁_智能锁加盟_开换锁-锁当家【官网】 | 吸音板_隔音板多少钱_降噪声学材料_环保阻燃防火_吸声装饰工程定制_厂家价格直供 - 佛山天阶声学材料厂 | 悬挂式小鼠笼架,植物标本采集箱,昆虫标本盒厂家-北京合力科创科技发展有限公司 | 济宁山银煤矿机械有限公司,钻采工具,防爆电器,凿岩机械,风动工具,矿山机械,建筑机械,支护设备,通风防尘,铁路设备,仪器仪表,大型设备,矿用泵,钎具类,消防类,矿车类,配件区类 | 乐清人才网_乐清招聘网_求职找工作平台 | 无铅锡膏,无铅锡膏厂家,有铅锡膏厂家,高温锡膏厂家,环保锡丝,贴片红胶-东莞市科舜电子科技有限公司 | 湖州网站建设_湖州网络公司_湖州后普网络科技有限公司 | 配重铁砂|合金钢丸|山东铁砂|济南嘉日金属制品有限公司 | 今日北斗 | 北斗最新动态| 游离二氧化硅处理仪-恒温恒湿称重系统-智能蒸馏仪-硫化物酸化吹气仪-萃取仪-COD消解仪 | 无锡大型数控龙门铣,喷涂加工,回火抛丸加工,精密不锈钢焊接机床身机床底座制造加工-无锡美高帝机械有限公司 | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 全地形消防摩托车_背负式细水雾_全氟己酮灭火装置「斯库尔消防」 | 洗地机,洗地机价格,扫地机,工业吸尘器,手推式洗地机,驾驶式洗地机,北京洗地机【北京高美环保科技有限公司】 | 昆明集装箱-云南住人集装箱活动房厂家|移动板房出租赁定制 | 推台锯_多片锯_圆木推台锯_方木多片锯_圆木多片锯-河北茂业机械有限公司 | 立式离心泵_不锈钢自吸泵_液下泵_变频无负压供水设备-大东海泵业无锡有限公司 | 手术无影灯生产厂家-提供电动手术台,电动产床定制与批发-山东华辰医疗设备有限公司 | 全自动码垛机械手,码垛机器人,拆包机,缠绕机,开箱封箱装箱机厂家-山东昊宇自动化设备有限公司 | 全自动包装机械设备_液体灌装机-迈驰日化包装流水线厂家 | 湖北高新技术企业认定申报|武汉高企认定代办|武汉项目申报首选 - 湖北创优企科技服务有限公司 | 厦门,泉州自助餐上门|生日自助餐|婚礼自助餐|公司聚会自助餐|户外烧烤|冷餐|茶歇外卖配送-福建非选餐饮公司 | 耐磨钢板_复合耐磨板_KN60耐磨钢板-北京耐默公司 | 木马交互设计研究中心 ,专注于用户体验与人机交互设计 - 首页 | 首页--南京俊全科技有限公司,环保监测无人机,大疆无人机,农用无人机,植保无人机,巡检无人机,无人机环境监测仪,消防,无人机,航拍测绘,固定翼无人机,无人机电力巡检,四旋翼无人机 | 提供技术支持-TXC晶振-晶振厂家-32.768K,石英晶体振荡器厂家销售-NDK振荡器正规代理商 | 江门市东信科技 - 江门小程序开发,江门网站制作,江门软件开发,江门app开发 | 腻子粉厂家_耐水腻子粉_内墙腻子粉批发_生态腻子粉_长沙美恩生态腻子粉厂家 | 永磁变频空压机_青岛空压机_螺杆空压机_口罩专用空压机-青岛凯瑞特机电设备有限公司 | 清扫器-聚氨酯清扫器-合金清扫器-四连杆自动纠偏-机械纠偏-锥辊纠偏-衡水涌泉机械科技有限公司 | 普利卡管|普利卡管接头|普利卡接头-上海闵彬管业有限公司 | 雅兰床垫-会呼吸的床垫-中国高端床垫-国潮床垫品牌 |