顯示源代碼
                添加管線
                 開發(fā)文檔
                            <!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; //得到當(dāng)前三維場景的橢球體
                    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) {
                            //將笛卡爾坐標(biāo)轉(zhuǎn)換為地理坐標(biāo)
                            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) {
                        //通過指定的橢球或者地圖對應(yīng)的坐標(biāo)系,將鼠標(biāo)的二維坐標(biāo)轉(zhuǎn)換為對應(yīng)橢球體三維坐標(biāo)
                        cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
                        if (cartesian&&drawstate) {
                            //將笛卡爾坐標(biāo)轉(zhuǎn)換為地理坐標(biāo)
                            var cartographic = ellipsoid.cartesianToCartographic(cartesian);
                            //將弧度轉(zhuǎn)為度的十進(jìn)制度表示
                            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 = "結(jié)束繪制";
                            if (nowtube){
                                nowtube.polylineVolume.positions=new bmgl.CallbackProperty(function (){
                                    return bmgl.Cartesian3.fromDegreesArray(path);
                                },false);
                            }
                        }
                        drawstate = !drawstate;
                    }
                </script>
                </html>                                                                                                                    
                主站蜘蛛池模板: 欧美日韩一区二区三区色综合 | 爱情岛论坛网亚洲品质自拍| 国产在线精品一区二区在线看| A∨变态另类天堂无码专区| 日韩免费黄色片| 亚洲欧洲精品成人久久曰 | 久久精品国产亚洲av麻豆色欲 | jlzz大全高潮多水老师| 日韩国产中文字幕| 亚洲日韩欧美一区二区三区| 精品国产AV无码一区二区三区 | 欧美成人四级剧情在线播放| 加勒比一本大道香蕉在线视频| 鲁啊鲁视频在线精品| 国产精品四虎在线观看免费| eva樱花动漫网| 成人美女黄网站色大色下载| 久久精品国产亚洲av水果派| 欧美日韩精品在线播放| 免费中文字幕在线国语| 羞羞的视频在线免费观看| 国产大屁股视频免费区| 香蕉视频成人在线观看| 夫妇交换性三中文字幕| 中文字幕在线成人免费看| 日韩在线视频不卡一区二区三区| 亚洲国产精品日韩专区av| 激情综合色综合啪啪开心| 冲田杏梨在线精品二区| 色悠久久久久久久综合网| 国产成人yy免费视频| 手机在线观看你懂的| 国内精品人妻无码久久久影院导航| а天堂中文最新一区二区三区| 撞击着云韵的肉臀| 久久夜色精品国产噜噜麻豆| 欧美人与性囗牲恔配| 亚洲欧美日韩精品在线| 狠狠综合久久综合88亚洲| 午夜人妻久久久久久久久| 色综合视频在线|