亚洲动漫在线观看-亚洲动漫第一页-亚洲丁香婷婷-亚洲丶国产丶欧美一区二区三区-亚洲第一综合网站-亚洲第一永久色

顯示源代碼
地圖二三維切換
 開發(fā)文檔
            <!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <script src="http://bigemap.com/offline_data/newjunbiao/vue.js"></script>
        <link
            href="http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/Widgets/widgets.css"
            rel="stylesheet"
        />
        <script src="http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js"></script>
        <!-- elementui -->
        <script src="http://bigemap.com/offline_data/newjunbiao/elementui.js"></script>
        <link
            rel="stylesheet"
            href="http://bigemap.com/offline_data/newjunbiao/elementui.css"
        />
        <title>地圖二三維切換</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            html,
            body {
                width: 100%;
                height: 100%;
            }
            #app {
                width: 100%;
                height: 100%;
            }
            #baseMap {
                width: 100%;
                height: 100%;
            }
            .tools {
                position: absolute;
                z-index: 9;
                top: 40px;
                right: 60px;
                width: 420px;
                height: 40px;
                display: flex;
                align-items: center;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <div class="tools">
                <el-button type="danger" size="small" @click="switchTo2d"
                    >切換為二維視角效果</el-button
                >
                <el-button
                    type="warning"
                    size="small"
                    @click="switchToColumbusView"
                    >切換為哥倫布視角效果</el-button
                >
                <el-button type="primary" size="small" @click="switchTo3d"
                    >切換為三維視角效果</el-button
                >
            </div>
            <div id="baseMap"></div>
        </div>
        <script>
            window.viewer = null;
            window.onload = () => {
                new Vue({
                    el: "#app",
                    data() {
                        return {};
                    },
                    mounted() {
                        this.initMap();
                    },
                    methods: {
                        //初始化地圖
                        initMap() {
                            bmgl.Config.HTTP_URL =
                                "http://ua.bigemap.com:30081/bmsdk/";
                            viewer = new bmgl.Viewer("baseMap", {
                                mapId: "bigemap.dc-satellite",
                                infoBox: false,
                                selectionIndicator: false,
                                requestRenderMode: false,
                            });
                        },
                        //切換為2d
                        switchTo2d() {
                            // console.log("2ddd");
                            if (viewer.scene.mode == 2) return;
                            let view = {};
                            //獲取轉(zhuǎn)換為2d模式前,當(dāng)前鏡頭的經(jīng)緯度位置
                            let p = bmgl.Cartographic.fromCartesian(
                                viewer.camera.position
                            );
                            view.destination = {
                                lng: bmgl.Math.toDegrees(p.longitude),
                                lat: bmgl.Math.toDegrees(p.latitude),
                                height: p.height,
                            };
                            view.orientation = {
                                heading: viewer.camera.heading,
                                roll: viewer.camera.roll,
                                pitch: viewer.camera.pitch,
                            };
                            //將3d模式切換為2d
                            // viewer.scene.morphTo2D(0);
                            viewer.scene.morphTo2D(0, (e) => {
                                console.log("Finish 2d");
                                viewer.camera.setView({
                                    destination: bmgl.Cartesian3.fromDegrees(
                                        view.destination.lng,
                                        view.destination.lat,
                                        view.destination.height
                                    ),
                                    orientation: {
                                        heading: 0,
                                        pitch: bmgl.Math.toRadians(-90),
                                        roll: 0,
                                    },
                                });
                            });
                        },
                        //切換為3d
                        switchTo3d() {
                            // console.log("3ddd");
                            if (viewer.scene.mode == 3) return;
                            let result = this.getPos();
                            viewer.scene.morphTo3D(0, (e) => {
                                viewer.camera.setView({
                                    destination: result.destination,
                                    orientation: result.orientation,
                                });
                            });
                        },
                        //切換為2.5d哥倫布視角
                        switchToColumbusView() {
                            if (viewer.scene.mode == 2.5) return;
                            let result = this.getPos();
                            viewer.scene.morphToColumbusView(0, (e) => {
                                viewer.camera.setView({
                                    destination: result.destination,
                                    orientation: result.orientation,
                                });
                            });
                        },

                        getPos() {
                            let params = {};
                            let ellipsoid = viewer.scene.globe.ellipsoid;
                            let camera = viewer.scene.camera;
                            let extend = viewer.camera.computeViewRectangle();
                            if (typeof extend === "undefined") {
                                //2D下會可能拾取不到坐標(biāo),extend返回undefined,所以做以下轉(zhuǎn)換
                                let canvas = viewer.scene.canvas;
                                let upperLeft = new bmgl.Cartesian2(0, 0); //canvas左上角坐標(biāo)轉(zhuǎn)2d坐標(biāo)
                                let lowerRight = new bmgl.Cartesian2(
                                    canvas.clientWidth,
                                    canvas.clientHeight
                                ); //canvas右下角坐標(biāo)轉(zhuǎn)2d坐標(biāo)

                                let ellipsoid = viewer.scene.globe.ellipsoid;
                                let upperLeft3 = viewer.camera.pickEllipsoid(
                                    upperLeft,
                                    ellipsoid
                                ); //2D轉(zhuǎn)3D世界坐標(biāo)

                                let lowerRight3 = viewer.camera.pickEllipsoid(
                                    lowerRight,
                                    ellipsoid
                                ); //2D轉(zhuǎn)3D世界坐標(biāo)

                                let upperLeftCartographic =
                                    viewer.scene.globe.ellipsoid.cartesianToCartographic(
                                        upperLeft3
                                    ); //3D世界坐標(biāo)轉(zhuǎn)弧度
                                let lowerRightCartographic =
                                    viewer.scene.globe.ellipsoid.cartesianToCartographic(
                                        lowerRight3
                                    ); //3D世界坐標(biāo)轉(zhuǎn)弧度

                                let minx = bmgl.Math.toDegrees(
                                    upperLeftCartographic.longitude
                                ); //弧度轉(zhuǎn)經(jīng)緯度
                                let maxx = bmgl.Math.toDegrees(
                                    lowerRightCartographic.longitude
                                ); //弧度轉(zhuǎn)經(jīng)緯度

                                let miny = bmgl.Math.toDegrees(
                                    lowerRightCartographic.latitude
                                ); //弧度轉(zhuǎn)經(jīng)緯度
                                let maxy = bmgl.Math.toDegrees(
                                    upperLeftCartographic.latitude
                                ); //弧度轉(zhuǎn)經(jīng)緯度

                                params.minx = minx; // 最小經(jīng)度
                                params.maxx = maxx; // 最大經(jīng)度
                                params.miny = miny; // 最小緯度
                                params.maxy = maxy; // 最大緯度
                            } else {
                                //3D獲取方式
                                // 最大經(jīng)度
                                params.maxx = bmgl.Math.toDegrees(extend.east); //弧度轉(zhuǎn)經(jīng)緯度
                                // 最大緯度
                                params.maxy = bmgl.Math.toDegrees(extend.north); //弧度轉(zhuǎn)經(jīng)緯度
                                // 最小經(jīng)度
                                params.minx = bmgl.Math.toDegrees(extend.west); //弧度轉(zhuǎn)經(jīng)緯度
                                // 最小緯度
                                params.miny = bmgl.Math.toDegrees(extend.south); //弧度轉(zhuǎn)經(jīng)緯度
                            }
                            let height =
                                camera.frustum.right - camera.frustum.left;

                            return {
                                destination: bmgl.Cartesian3.fromDegrees(
                                    (params.minx + params.maxx) / 2,
                                    (params.miny + params.maxy) / 2,
                                    height
                                ),

                                orientation: {
                                    heading: 0,
                                    pitch: bmgl.Math.toRadians(-90),
                                    roll: 0,
                                },
                            };
                        },
                    },
                    beforeDestroy() {
                        viewer.destroy();
                        viewer = null;
                    },
                });
            };
        </script>
    </body>
</html>
        
主站蜘蛛池模板: 亚洲 日韩 国产 中文视频 | 好姑娘完整版在线观看中文 | 香港日本三级亚洲三级 | 黑人女性猛交xxxxxⅹxx | 爆操美女在线观看 | aaa毛片手机在线现看 | 国产精品久久国产精品99 gif | 久久99精国产一区二区三区四区 | 欧美ay| h肉动漫在线视频无修无遮挡 | 国模娜娜a4u1546全套 | 校花被扒开尿口折磨憋尿 | 99久久99热久久精品免 | 公妇乱淫在线播放免费观看 | 午夜勾魂曲 | 男人的天堂视频在线 | 草久热 | 秋霞一级 | 好湿好紧好大野战 | 亚洲老头与老太hd | 四虎最新紧急更新地址 | 91你懂的 | 国语自产拍在线播放不卡 | 精品成人一区二区三区免费视频 | 毛片一区二区三区提莫影院 | 欧美久久久久久 | 青涩体验在线观看未删减 | 亚洲视频在线一区二区 | 国产日产国无高清码2020 | 日韩国产欧美精品综合二区 | 99在线视频精品费观看视 | www.9p234.com| 99在线观看免费视频 | 国产91免费 | 亚洲国产精品自产在线播放 | 99爱在线观看精品视频 | 我半夜摸妺妺的奶C了她软件 | 免费看视频高清在线观看 | 日本黄a | 国产成人精品视频频 | 成人日b视频 |