显示源代码
加载大量的面
 开发文档
            <!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"
        />
        <!-- 引入turf.js相关库 -->
        <script src="/offline_data/turf.min.js"></script>
        <title>PrimitiveAPI加载大量的面</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: 200px;
                height: 40px;
                display: flex;
                align-items: center;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <div id="baseMap"></div>
        </div>
        <script>
            let 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-tian-w-satellite",
                                infoBox: false,
                                selectionIndicator: false,
                                requestRenderMode: false,
                            });
                            if (
                                bmgl.FeatureDetection.supportsImageRenderingPixelated()
                            ) {
                                viewer.resolutionScale =
                                    window.devicePixelRatio;
                            }
                            //开启抗锯齿,让图像更加清晰
                            viewer.scene.postProcessStages.fxaa.enabled = true;
                            this.loadManyPolygons();
                        },
                        loadManyPolygons() {
                            let polygons = turf.randomPolygon(1000, {
                                bbox: [-180, -90, 180, 90],
                                num_vertices: 4,
                            });
                            let fs = polygons.features;
                            let instanceArr = [];
                            for (let i = 0; i < fs.length; i++) {
                                let pos = fs[i].geometry.coordinates[0];
                                let polygon = new bmgl.GeometryInstance({
                                    geometry: new bmgl.PolygonGeometry({
                                        polygonHierarchy:
                                            new bmgl.PolygonHierarchy(
                                                bmgl.Cartesian3.fromDegreesArray(
                                                    pos.flat()
                                                )
                                            ),
                                    }),
                                });
                                instanceArr.push(polygon);
                            }
                            viewer.scene.primitives.add(
                                new bmgl.Primitive({
                                    geometryInstances: instanceArr,
                                    // 设置多边形的表面材质
                                    appearance: new bmgl.MaterialAppearance({
                                        material: new bmgl.Material({
                                            fabric: {
                                                type: "Color",
                                                uniforms: {
                                                    color: new bmgl.Color.fromCssColorString(
                                                        "#f45d22"
                                                    ).withAlpha(0.4),
                                                },
                                            },
                                        }),
                                    }),
                                })
                            );
                        },
                    },
                    beforeDestroy() {
                        viewer.destroy();
                        viewer = null;
                    },
                });
            };
        </script>
    </body>
</html>