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

顯示源代碼
添加道路模型
 開發文檔
            <!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="http://www.cnhrsm.com/Public/common/js/jquery.min.js"></script>
    <link href="http://www.cnhrsm.com/Public/common/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            margin: 0;
            padding: 0;
        }

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

        #control {
            user-select: none;
            position: absolute;
            bottom: 20px;
            right: 0;
            width: 380px;
            background: #f1f1f1;
        }

        #control .panel {
            margin-bottom: 0;
        }

        #control .panel input[type=range] {
            width: calc(100% - 30px);
            margin-left: 10px;
        }

        #control .minus, #control .plus {
            position: absolute;
            text-align: center;
            line-height: 16px;
            font-size: 20px;
            display: inline-block;
            height: 20px;
            cursor: pointer;
            width: 20px;
            border-radius: 100%;
            border: 1px solid #29d2ff;
        }

        #control .minus {
            left: 0;
            top: -1px;
        }

        #control .plus {
            right: 4px;
            top: -1px;

        }
    </style>
    <title>part_test</title>
</head>
<body>
<div id='container'></div>
<div id="control">
    <div class="panel panel-info">
        <div class="panel-heading">
            位置校正
        </div>
        <div class="panel-body">
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>縮放</span>
                        <span class="value">1</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="scale" type="range" value="1" min="0.01" max="3" step="0.1">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>經度</span>
                        <span class="value">93.946</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="longitude" type="range" value="93.946" min="93.3" max="94.2" step="0.0001">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>緯度</span>
                        <span class="value">36.6878</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="latitude" type="range" value="36.6878" min="36.2" max="36.9" step="0.0001">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>高度</span>
                        <span class="value">-380</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="height" type="range" value="-380" min="-2000" max="2000" step="1">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>X旋轉</span>
                        <span class="value">0</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="rx" type="range" value="0" min="-360" max="360" step="1">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>Y旋轉</span>
                        <span class="value">0</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="ry" type="range" value="0" min="-360" max="360" step="1">
                    <span class="plus mi">+</span>
                </div>
            </div>
            <div class="form-group row">
                <div class="col-sm-4">
                    <label>
                        <span>Z旋轉</span>
                        <span class="value">-4.5</span>
                    </label>
                </div>
                <div class="col-sm-8">
                    <span class="minus mi">-</span>
                    <input name="rz" type="range" value="-4.5" min="-360" max="360" step="1">
                    <span class="plus mi">+</span>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', {mapId: 'bigemap.dc-satellite',requestRenderMode:false});
   var tilesets = new bmgl.BM3DTileset({url: '/bmgl/data/road2/tileset.json', maximumScreenSpaceError: 1});
    
    var tileData;
    tilesets.readyPromise.then(function (tileset) {
        viewer.scene.primitives.add(tileset);
        // var default_HeadingPitchRange = new bmgl.HeadingPitchRange(0.0, -0.5, tileset.boundingSphere.radius * 2.0);
        // viewer.zoomTo(tileset, default_HeadingPitchRange);
        viewer.camera.setView({
            "destination": bmgl.Cartesian3.fromDegrees(93.70850968438515, 36.678872101477836,3155.311533),
            "orientation": {"heading":1.541920544673033,"roll":0.003466896409897835,"pitch":-0.3847566214148632}
        });
        var cartographic = bmgl.Cartographic.fromCartesian(tileset.boundingSphere.center);
        var delta_lng = 0, delta_lat = 0;
        console.log(bmgl.Math.toDegrees(cartographic.longitude), bmgl.Math.toDegrees(cartographic.latitude));
        var surface = bmgl.Cartesian3.fromRadians(cartographic.longitude + delta_lng, cartographic.latitude + delta_lat, 0.0);
        var offset = bmgl.Cartesian3.fromRadians(cartographic.longitude + delta_lng - bmgl.Math.toRadians(23), cartographic.latitude - bmgl.Math.toRadians(4.5), 0);
        var translation = bmgl.Cartesian3.subtract(offset, surface, new bmgl.Cartesian3());
        // tileset.modelMatrix = bmgl.Matrix4.fromTranslation(translation);
        // tileset.modelMatrix=update3dtilesMaxtrix(params);
        tileData = tileset;
        tileset._root.transform = update3dtilesMaxtrix();
        // console.log(tileset._root.transform);
    }).otherwise(function (error) {
        console.log(error);
    });
    $('#control').on('change', 'input[type=range]', function () {
        $(this).parent().parent().find('.value').html($(this).val());
        var name = $(this).prop('name');
        tileModelTool[name] = parseFloat($(this).val());
        tileData._root.transform = update3dtilesMaxtrix();
        console.log('aaa');
    });
    $('#control').on('click', '.mi', function () {
        var input = $(this).parent().find('input');
        var name = input.prop('name');
        var step = input.prop('step');
        if ($(this).hasClass('minus')) {
            tileModelTool[name] -= parseFloat(step);
        } else {
            tileModelTool[name] += parseFloat(step);
        }
        if (parseFloat(input.prop('min')) > tileModelTool[name]) {
            tileModelTool[name] = parseFloat(input.prop('min'));
        }
        if (parseFloat(input.prop('max')) < tileModelTool[name]) {
            tileModelTool[name] = parseFloat(input.prop('max'));
        }
        input.val(tileModelTool[name]);

        $(this).parent().parent().find('.value').html(tileModelTool[name].toString().substr(0, 7));
        tileData._root.transform = update3dtilesMaxtrix();

    });
    var tileModelTool = {
        scale: 1,
        longitude: 93.9435,
        latitude: 36.6613,
        height: -380, //修改高度
        rx: 0,
        ry: 0,
        rz: -3.5, //修改旋轉
        alpha: 0.5
    }

    function update3dtilesMaxtrix() {

        var mx = bmgl.Matrix3.fromRotationX(
            bmgl.Math.toRadians(tileModelTool.rx)
        );
        var my = bmgl.Matrix3.fromRotationY(
            bmgl.Math.toRadians(tileModelTool.ry)
        );
        var mz = bmgl.Matrix3.fromRotationZ(
            bmgl.Math.toRadians(tileModelTool.rz)
        );
        var rotationX = bmgl.Matrix4.fromRotationTranslation(mx);
        var rotationY = bmgl.Matrix4.fromRotationTranslation(my);
        var rotationZ = bmgl.Matrix4.fromRotationTranslation(mz);
        //平移 修改經緯度
        var position = bmgl.Cartesian3.fromDegrees(
            tileModelTool.longitude,
            tileModelTool.latitude,
            tileModelTool.height
        );

        var m = bmgl.Transforms.eastNorthUpToFixedFrame(position);
        //旋轉、平移矩陣相乘
        bmgl.Matrix4.multiply(m, rotationX, m);
        bmgl.Matrix4.multiply(m, rotationY, m);
        bmgl.Matrix4.multiply(m, rotationZ, m);
        //縮放 修改縮放比例
        var scale = bmgl.Matrix4.fromUniformScale(tileModelTool.scale);
        bmgl.Matrix4.multiply(m, scale, m);
        return m;
    }
</script>
</body>
</html>                                                                                                                                                                                                                                
主站蜘蛛池模板: 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 真石漆生产厂家|外墙水包水|水包砂-新佳官网 | 山西华盛筑景装饰,山西专业公装公司,太原公装装修公司,包括:办公室,酒店宾馆,商铺店铺,学校幼儿园,会所会馆饭店餐馆等装修设计 | 联动机-钻井转盘-滑动游车-河南思达瑞石油机械制造有限公司 | 无锡心理咨询_江阴心理咨询_强迫症咨询_无锡笑一心理咨询有限公司 | 云南万通汽车学校【官方网站】 | 太阳能路灯-高杆灯-景观灯-玉兰灯-中华灯-LED市电-庭院灯厂家-扬州汉威光电科技有限公司 | 螺带混合机|卧式螺带混合机|双动力混合机-无锡鑫海干燥粉体设备有限公司 | 河北瑞峰医疗-河北护理床-河北医用病床-河北养老院护理床-河北护理床厂家-河北病床厂家-河北瑞峰医疗 | 梦想加空间 - 一个程序猿的个人博客网站| 免费建站_自助建站_网站建设_企业建站_中小企业建网站_免费网站模板-牵牛建站 | 卡压式管件_不锈钢卡压式管件_双卡压管件_不锈钢沟槽管件_承插焊管件_温州市中达阀门管件有限公司 | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 易交换在线易货电商平台-互联网易物贸易,以物换物-无锡据风网络科技有限公司 | 小程序开发,网站建设,APP开发,商城系统开发,社区团购系统开发,区块链溯源,互联网资质办理-软多信息技术有限公司_河南软多信息技术有限公司 | 秦皇岛天视影像有限公司,宣传片创意拍摄制作,商业广告拍摄公司,影视影像服务商 - 秦皇岛天视影像有限公司,宣传片创意拍摄制作,商业广告拍摄公司,影视影像服务商 秦皇岛市信恒电子科技有限公司 秦皇岛市华谊彩印有限公司 | 长沙考研-长沙考研辅导学校-长沙领航教育科技有限公司 | 上海五相仪器仪表有限公司-鼓风干燥箱-拍击式无菌均质器生产厂家 | 真空清洗炉_电磁感应真空清洗炉-盐城市盛逸化纤机械有限公司 | 儒亚科技_磁悬浮天平,竞争吸附,高压热重,重量法高压,高压密度 | 智能试剂柜-疾控|高校实验室|医院药品智能试剂管理柜-北京晶品赛思 | 雷达液位计_耐磨热电偶_蒸汽_柴油,汽油_天然气流量计_巴歇尔槽_一体化温度变送器-江苏翔腾仪表有限公司 | 铝合金百叶窗_西安百叶窗厂家-西安市未央区通达建材物资部 | 老照片修复,修复老照片,老旧照片翻新-老照片修复网 | 浙江康恩贝制药股份有限公司 | 重庆惠程信息科技股份有限公司 | 深圳市佳顺优印印刷有限公司,佳顺优印,画册印刷,海报印刷,封套印刷,手提袋印刷,包装盒印刷,彩盒印刷,无碳纸印刷,不干胶印刷,信封印刷,便笺印刷,笔记本印刷,台历印刷,挂历印刷,国际会展中心附近印刷厂,宝安印刷厂,宝安教材印刷厂 | 潍坊亿宏重工机械有限公司,破碎机,高性能立磨机,颚式破碎机,锤式破碎机反击式破碎机,重锤式破碎机,高性能反击式破碎机,圆锥式破碎机,给料机系列,链板给料机系列,简易给料机系列,振动给料机 | 九洲集团官网(300040)—哈尔滨九洲集团股份有限公司 | 杀菌剂_除藻剂_杀菌灭藻剂_1227杀菌剂_中北精细化工 | 上海祝融起重机械有限公司-德国耶鲁手拉葫芦|耶鲁手拉葫芦|耶鲁手扳葫芦|耶鲁电动葫芦经销代理 | 西安鸿仁汇智软件公司是高新技术企业,专业为企业及高校提供智慧化管理一站式解决方案 | 上海叶拓科技有限公司 | 航星洗涤机械有限公司_洗脱机_烘干机_烫平机_折叠机| 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 - 眉山净源居环保科技有限公司,眉山除甲醛公司,眉山甲醛治理,眉山保洁服务,眉山家政保洁,眉山家电维修 | 远东齿轮泵|高粘度齿轮泵|三螺杆油泵|沥青保温泵|高粘度稠油泵-远东泵业官网 | 自动_链条式_电动推杆_电动开窗器厂家_山东鑫宏玺智能科技有限公司 | 唐山搬家公司-搬家公司电话价格-四通搬家 | 皮革耐折试验机-消字率测试仪-面具全视野测试仪-东莞市誉扬检测仪器有限公司 | 三禾防爆-专业的防爆电气生产厂家 | 食用油灌装机-油类食用油灌装设备-液体灌装机_青州市惠联灌装机械 |