echarts gl 透视地球 科技感 地球旋转

采用vue2+js实现echarts3D旋转球体的放大、缩小、拖动、旋转。
版权声明:本文为转载 修改CSDN博主「散场的拥抱&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。如有侵权联系我
原文链接:https://blog.csdn.net/qq_44699269/article/details/134731107

参考链接:https://madeapie.com/#/chartInfo/xJsg-fjzkv

1.效果

二、代码配置:
(1)下载地图数据:将下面的链接在网页上打开并复制里面所有的东西

mapData.json:https://www.isqqw.com/asset/get/s/data-1625545136350-oWFk_ystL.json
map2.json:https://madeapie.com/asset/get/s/data-1491887968120-rJODPy9ae.json
(2)创建main.json,将复制的东西放在main.json里面,结构如下:

3)父组件index.vue

<template>
  <div class="page-con">
    <div class="main-con">
      <tmap />
    </div>
  </div>
</template>

<script>
import tmap from "./components/tmap/tmap.vue";
export default {
  components: {
    tmap
  }
}
</script>

<style lang="scss" scoped>
.page-con {
  width: 100%;
  height: 100%;
  .main-con {
    width: 75%;
    height: 73%;
  }
}
</style>

(4)子组件tmap.vue

<template>
    <div class="bar">
        <div ref="volumn" class="volume" />
    </div>
</template>

<script>
    import echarts from "echarts";
    import "echarts-gl";
    import WorldJSON from './mapData.json';
    import aa from './map2.json';
    echarts.registerMap("world", WorldJSON);
    export default {
        data() {
            return {
                myChart: null,
            };
        },
        mounted() {
            // 获取数据。
            this.$nextTick(() => {
                if (this.$refs.volumn) {
                    this.reloadChart();
                    // 自适应浏览器。
                    window.addEventListener("resize", () => {
                        this.reloadChart();
                    });
                }
            });
        },
        // 组件销毁。
        beforeDestroy() {
            this.disposeChart();
        },
        methods: {
            drawChart() {
                this.myChart = echarts.init(this.$refs.volumn);
                var baseTexture = null;
                var option = null;
                var geoJson = null;
                var bb = null

                function getGeoJsonData() {
                    geoJson = WorldJSON;
                    bb = aa.filter(function(dataItem) {
                            return dataItem[2] > 0;
                        })
                        .map(function(dataItem) {
                            return [dataItem[0], dataItem[1], Math.sqrt(dataItem[2])];
                        });
                    getBaseTexture();
                }

                function getBaseTexture() {
                    echarts.registerMap("world", geoJson);
                    let canvas = document.createElement("canvas");
                    baseTexture = echarts.init(canvas, null, {
                        width: 4096,
                        height: 2048,
                    });
                    baseTexture.setOption({
                        backgroundColor: "#001213",
                    });
                    drawEarth();
                }
                var self = this;

                function drawEarth() {
                    option = {
                        visualMap: {
                            show: false,
                            min: 0,
                            max: 60,
                            inRange: {
                                symbolSize: [1.0, 10.0],
                            },
                        },
                        globe: {
                            show:false,
                            globeOuterRadius: 100,
                            shading: "color",
                            environment: "#00060C",
                            light: {
                                ambient: {
                                    intensity: 1,
                                },
                            },
                        },
                        series: [{
                            type: 'scatter3D',
                            coordinateSystem: 'globe',
                            itemStyle: {
                                color: '#4ECAF1', //球上面点颜色
                                opacity: 1,
                            },
                            data: bb,
                        }, ],
                    };
                    self.myChart.clear();
                    self.myChart.setOption(option, true);
                }
                getGeoJsonData();
            },
            
            // 销毁图表。
            disposeChart() {
                if (this.myChart) {
                    this.myChart.dispose();
                }
            },
            // 重新加载图表。
            reloadChart() {
                this.disposeChart();
                this.drawChart();
            },
        },
    };
</script>

<style lang="scss" scoped>
    .bar {
        width: 100%;
        height: 100%;

        .volume {
            width: 100%;
            height: 100%;
        }
    }
</style>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于使用 ECharts GL 绘制地球的问题,您可以参考以下步骤: 1. 首先,确保您已经引入了 ECharts GL 库。您可以在项目中使用 npm 安装或者直接通过 script 标签引入。 2. 创建一个 HTML 容器来展示地球图表。例如,您可以在 HTML 文件中添加一个 `<div>` 元素,并为其指定一个唯一的标识符(例如 "chart-container")。 3. 在 JavaScript 文件中,使用 ECharts GL 的对象创建一个地球图表实例,并将其绑定到之前创建的 HTML 容器上。例如: ```javascript // 获取HTML容器元素 var chartContainer = document.getElementById('chart-container'); // 创建地球图表实例 var chart = echarts.init(chartContainer); // 设置图表配置项和数据 var option = { // 在这里配置地球图表的相关属性和数据 // 例如,设置 series 为 'globe' 类型,以及其他的样式和数据配置 }; // 使用设置好的配置项和数据渲染地球图表 chart.setOption(option); ``` 4. 在配置项(`option`)中,您可以根据需要自定义地球图表的样式、数据以及交互行为。ECharts GL 提供了丰富的配置选项,您可以根据需求进行调整。具体的配置项可以参考 ECharts GL 的官方文档。 5. 最后,通过调用 `chart.setOption(option)` 方法来渲染地球图表到指定的 HTML 容器中。这样,您就可以在浏览器中看到绘制好的地球图表了。 希望以上步骤能够对您有所帮助!如有更多问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值