echarts 绘制3D中国地图

一、项目背景

本项目基于 ECharts 和 ECharts-GL 实现了一个3D中国地图的可视化页面,支持地图区域高亮、涟漪散点、动态飞线等效果,适用于地理数据展示、流向分析等场景。

二、效果图

  • 3D中国地图,带有地形贴图和立体边界。
  • 主要城市以涟漪散点高亮显示。
  • 城市间流向以动态飞线展示,直观表现数据流动。
    在这里插入图片描述

三、实现过程

1. 技术选型

  • ECharts:强大的数据可视化库,支持丰富的图表类型和地理可视化。
  • ECharts-GL:ECharts 的 3D 扩展,支持三维地图、三维柱状图等高级可视化效果。
  • Vue.js:前端主流框架,负责页面结构和生命周期管理。

2. 地图数据准备

使用了 china.json 作为中国地图的 GeoJSON 数据源,放置于 src/utils/china.json。
贴图采用了 map.svg,增强地图的地形感和美观度。
点击这里获取中国地图json

3. 主要实现步骤

(1)依赖版本选择与安装
 "echarts": "^5.6.0",
 "echarts-gl": "^2.0.9",
(2)地图注册与初始化

在 mounted 钩子中,注册中国地图并初始化 ECharts 实例:

import * as echarts from 'echarts'
import "echarts-gl";
import geoJson from '@/utils/china.json'

mounted() {
   
   
	//点击散点城市坐标位置
    const chinaData = [
        {
   
    name: '北京市', value: [116.405285, 39.904989] },
        {
   
    name: '成都', value: [104.0657, 30.6598] },
        {
   
    name: '上海', value: [121.4737, 31.2304] },
        {
   
    name: '拉萨', value: [91.11, 29.97] }
    ];
    const myChart = echarts.init(document.getElementById('mapContainer'));
    this.initChart('china', chinaData, myChart)
}
(3)3D地图与贴图

使用 geo3D 配置项实现三维地图。
通过 colorMaterial.detailTexture 属性,将2D地图渲染为纹理贴图,贴在3D地图表面,提升真实感。

因3d地图无法实现飞线效果,故此采用3d和2d贴合实现,散点效果

geo3D: {
   
   
    map: 'china',
    regionHeight: 2.1,
    shading: 'color',
    colorMaterial: {
   
   
        detailTexture: mapBg, // 纹理贴图
        textureTiling: 1
    },
    // ... 视角、边界等配置
}
(4)下层地图与分层效果

通过 series 添加 map3D 类型,设置不同的 regionHeight,实现地图分层立体感。

(5)2D地图贴图生成

LoadMapping 方法生成2D地图配置,主要用于生成纹理贴图。
贴图采用 SVG 图像,提升地图的美观度和辨识度。

itemStyle: {
   
   
    areaColor: {
   
   
        type: 'pattern',
        image: require('../assets/images/map.svg'),
        repeat: 'no-repeat',
    },
}
(6)涟漪散点与飞线

使用 effectScatter 实现城市位置的涟漪散点动画。
使用 lines 实现城市之间的动态飞线,模拟流向效果。

{
   
   
    type: `effectScatter`,
    coordinateSystem: `geo`,
    rippleEffect: {
   
    period: 5, scale: 4, brushType: 'fill' },
    itemStyle: {
   
    normal: 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值