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

顯示源代碼
添加管線
 開發文檔
            <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圓柱體、圓錐體</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%;
    }

    button {
        position: absolute;
        top: 20px;
        left: 20px;
    }
</style>

<body>
<div id="container"></div>
<div id="loadingOverlay">
    <h1>Loading...</h1>
</div>
<button onclick="drawstart()"><span class="btnval">開始繪制</span></button>
</body>
<script>
    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer('container', {
        requestRenderMode: false,
        mapId: 'bigemap.dc-satellite',
        infoBox:false,
        selectionIndicator:false,
    });
    viewer.scene.globe.depthTestAgainstTerrain = false;

    function computeCircle(radius) {
        var positions = [];
        for (var i = 0; i < 360; i+=30) {
            var radians = bmgl.Math.toRadians(i);
            positions.push(
                new bmgl.Cartesian2(
                    radius * Math.cos(radians),
                    radius * Math.sin(radians)
                )
            );
        }
        return positions;
    }

    function computeStar(arms, rOuter, rInner) {
        var angle = Math.PI / arms;
        var length = 2 * arms;
        var positions = new Array(length);
        for (var i = 0; i < length; i++) {
            var r = i % 2 === 0 ? rOuter : rInner;
            positions[i] = new bmgl.Cartesian2(
                Math.cos(i * angle) * r,
                Math.sin(i * angle) * r
            );
        }
        return positions;
    }
    var redTube = viewer.entities.add({
        polylineVolume: {
            positions: bmgl.Cartesian3.fromDegreesArray([
                -85.0,
                32.0,
                -85.0,
                36.0,
                -89.0,
                36.0,
            ]),
            shape: computeCircle(60000.0),
            material: bmgl.Color.RED,
        },
    });

    var greenBox = viewer.entities.add({
        polylineVolume: {
            positions: bmgl.Cartesian3.fromDegreesArrayHeights([
                -90.0,
                32.0,
                0.0,
                -90.0,
                36.0,
                100000.0,
                -94.0,
                36.0,
                0.0,
            ]),
            shape: [
                new bmgl.Cartesian2(-50000, -50000),
                new bmgl.Cartesian2(50000, -50000),
                new bmgl.Cartesian2(50000, 50000),
                new bmgl.Cartesian2(-50000, 50000),
            ],
            cornerType: bmgl.CornerType.BEVELED,
            material: bmgl.Color.GREEN.withAlpha(0.5),
            outline: true,
            outlineColor: bmgl.Color.BLACK,
        },
    });

    var blueStar = viewer.entities.add({
        polylineVolume: {
            positions: bmgl.Cartesian3.fromDegreesArrayHeights([
                -95.0,
                32.0,
                0.0,
                -95.0,
                36.0,
                100000.0,
                -99.0,
                36.0,
                200000.0,
            ]),
            shape: computeStar(7, 70000, 50000),
            cornerType: bmgl.CornerType.MITERED,
            material: bmgl.Color.BLUE,
        },
    });
    viewer.zoomTo(viewer.entities);
    var scene = viewer.scene;
    var handler = new bmgl.ScreenSpaceEventHandler(scene.canvas);
    var ellipsoid = scene.globe.ellipsoid; //得到當前三維場景的橢球體
    let firstclick = 1;
    let nowtube
    let tmpNowtube;
    let path = [];
    let tmpP=[];
    let drawstate = false
    handler.setInputAction(function (movement) {
        cartesian = viewer.camera.pickEllipsoid(movement.position, ellipsoid);//movement.endPosition
        if (cartesian&&drawstate) {
            //將笛卡爾坐標轉換為地理坐標
            var cartographic = bmgl.Cartographic.fromCartesian(cartesian);
            longitudeString = bmgl.Math.toDegrees(cartographic.longitude);
            latitudeString = bmgl.Math.toDegrees(cartographic.latitude);
            if (!nowtube){
                nowtube = viewer.entities.add({
                    polylineVolume: {
                        positions:new bmgl.CallbackProperty(function (){
                            return bmgl.Cartesian3.fromDegreesArray(path);
                        },false),
                        shape: computeCircle(10000),
                        material: bmgl.Color.RED,
                    },
                });
            }
            if (!tmpNowtube){
                viewer.entities.add({
                    polylineVolume: {
                        positions:new bmgl.CallbackProperty(function (){
                            return tmpP[0]? bmgl.Cartesian3.fromDegreesArray(tmpP):[];
                        },false),
                        shape: computeCircle(10000),
                        material: bmgl.Color.BLUE.withAlpha(0.7),
                    },
                });
            }
            path.push(longitudeString);
            path.push(latitudeString);
            tmpP[0]=longitudeString;
            tmpP[1]=latitudeString;
        }
    }, bmgl.ScreenSpaceEventType.LEFT_UP);

    handler.setInputAction(function (movement) {
        //通過指定的橢球或者地圖對應的坐標系,將鼠標的二維坐標轉換為對應橢球體三維坐標
        cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
        if (cartesian&&drawstate) {
            //將笛卡爾坐標轉換為地理坐標
            var cartographic = ellipsoid.cartesianToCartographic(cartesian);
            //將弧度轉為度的十進制度表示
            tmpP[2] = bmgl.Math.toDegrees(cartographic.longitude);
            tmpP[3] = bmgl.Math.toDegrees(cartographic.latitude);
        }
    }, bmgl.ScreenSpaceEventType.MOUSE_MOVE);

    function drawstart() {
        if (drawstate) {
            let btn = document.querySelector('.btnval')
            btn.innerHTML = "開始繪制";
            path.length>=4&&(nowtube.polylineVolume.positions=nowtube.polylineVolume.positions.getValue());
            path.length=0;
            tmpP.length=0;
        } else {
            let btn = document.querySelector('.btnval')
            btn.innerHTML = "結束繪制";
            if (nowtube){
                nowtube.polylineVolume.positions=new bmgl.CallbackProperty(function (){
                    return bmgl.Cartesian3.fromDegreesArray(path);
                },false);
            }
        }
        drawstate = !drawstate;
    }
</script>
</html>                                                                                                                    
主站蜘蛛池模板: 江门市东信科技 - 江门小程序开发,江门网站制作,江门软件开发,江门app开发 | 太阳能路灯生产厂家-郑州太阳能高杆灯价格-道路照明智能路灯-河南坤德照明 | 育婴师_催乳师证_月嫂证怎么考_育婴师证报考需要什么条件-家政培训网 | 亚洲一区日韩一区欧美一区a,中文字幕乱妇无码AV在线,欧美日韩免费在线观看,国产精品一区二区三区免费,日韩精品免费一线在线观看,日韩一本在线,国产呦精品一区二区三区下载,国产日韩精品一区二区在线观看,欧美日韩高清一区二区三区,日韩在线免费观看视频,欧美日韩一区在线观看 | 新密耐火材料厂家价格-河南郑州荣盛窑炉耐火材料有限公司 | 自动_链条式_电动推杆_电动开窗器厂家_山东鑫宏玺智能科技有限公司 | 罗茨鼓风机维修_三叶罗茨风机维修厂家电话_山东长沙章丘鼓风机修理_章鼓高压真空泵「上门服务」 罗茨鼓风机价格_三叶罗茨鼓风机厂家-山东锦工有限公司 | 铸造工具|芯撑|铸造毛刷|枣强县永盛五金工具厂 | 合肥食品检测-安徽卫生检测-水质检测机构-安徽金标准检测研究院有限公司 | 专业生产安检门-X光机-防爆罐-金属探测门-中警思创军警装备厂家 专业色素炭黑生产厂家,提供各种用途色素炭黑价格-枣庄鑫源化工 专业护工_医院护工_护工陪护_住家护工- 心陪护 | 网上配音_免费配音_广告专题配音_网络录音网站【海豚配音】 | 上海家博会_2025上海家博会时间表_5月31-6月2日_上海家博会门票_免费领取入口 | 专业网站建设_企业品牌营销 · 北京汇仁智杰科技有限公司 | 易居房产律师网|北京房产律师|房产纠纷律师|房产律师 | 陶瓷纤维模块|陶瓷纤维毯|陶瓷纤维纸|高温隔热材料|陶瓷纤维厂家-济南火龙热陶瓷有限责任公司 | 太原石膏基自流平,太原轻质抹灰石膏,太原腻子粉,太原抗裂砂浆-太原乔贝建筑材料有限公司 | 四字成语大全6000个,经典成语大全及解释,1000个50000个成语及解释 - 同鑫成语网 | 济南塑料袋,食品包装袋,复合塑料袋,方便袋-济南精美塑料包装厂 | 山东中橡新材料有限公司-专业色素炭黑厂家-生产销售各种色素炭黑-用途广泛-价格优势-供应稳定 | 油压缓冲器-缓冲器-重庆佑旺机械有限公司[官网]西捷克重庆办事处 | 快达物流:电商和微商的仓储物流外包和托管服务-北京快达国际物流服务有限公司官方网站 | 庭院大门,铝艺大门厂家,别墅庭院大门「免费设计」汉兰达庭院门厂家 | 内衬不锈钢复合管,大口径内衬不锈钢复合钢管,双金属复合管,内衬不锈钢复合管厂家-江苏新澎 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 塑料凹版印刷机-干式复合机-分条机-涂布机生产厂家温州华印机械有限公司 | 萍乡市信源电瓷制造有限公司--官网|萍乡市信源电瓷|萍乡电瓷厂|萍乡绝缘子-萍乡市信源电瓷制造有限公司 | 一体式电磁流量计_分体式电磁流量计_卫生级电磁流量计_卫生型电磁流量计_电池供电电磁流量计_卡箍式电磁流量计_废水电磁流量计_德克森仪表(淮安)有限公司官网 | 楼宇门厂家-氟碳漆门-不锈钢大门-单元门-锌合金大门-永康市龙卫门业 | 均高生物科技(上海)有限公司-二十年专注于均质&middot;乳化&middot;粉碎&middot;分散工艺 | 金属探测机_食品金属探测仪_食品金属探测器_广东善安金属检测机 金属剪切机,金属打包机,废钢剪切机,废铁压块机,金属压块机,废纸打包机,重废龙门剪,废钢龙门剪,箱式剪,液压剪切机-瑞顿机械装备制造江阴有限公司 | 康复支具-医用颈托-辅助固定矫形器-骨折固定带生产厂家-安平县康信医疗器械有限公司 | 卫生间隔断-东莞卫生间隔断-东莞卫生间隔断厂家-公共卫生间隔断-东莞市康丰家居建材有限公司 | 威海华东数控股份有限公司| 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 无线对讲系统-海能达对讲机-广州中达慧通科技有限公司 | 上海机械加工-机械加工-精密机械加工-上海欧野精工机械有限公司 上海慧泰仪器制造有限公司_一体型马弗炉-可控真空干燥箱-强光稳定性试验箱 | 山东德曼医疗设备集团有限公司 | 江南专汽公司首页-消防车厂家,水罐/泡沫消防车价格(热销品牌) | 乌鲁木齐万通汽车学校| 宜宾三江人才网_三江人才网_宜宾三江人才网_三江人才直聘网是本地颇具规模的网上人才市场 | 小型环境空气质量连续监测系统-烟气排放连续监测仪(碳排放)-青岛明德环保仪器有限公司 |