【3d地图】vue中使用echarts geo3D

news/2025/1/17 21:32:48/

文章目录

  • 前言
  • 一、echarts是什么?
  • 二、使用步骤
    • 1.引入echarts库,3d地图必须安装echarts-gl依赖
    • 2.制作地图JSON文件
      • 2.1 制作自己的json
    • 3.引入到vue组件中
    • 4.创建一个有固定宽高大小的div元素
    • 5.配置echarts参数
    • 6.挂载到mounted钩子,并且组件销毁时释放内存
  • 总结


前言

想必对于一个前端来说,大家对echarts并不陌生,本次文章主要记录了我在vue2中使用echarts 渲染3d地图过程中的一点心得,本文代码包含详细的配置项注释~


一、echarts是什么?

“ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。”

二、使用步骤

1.引入echarts库,3d地图必须安装echarts-gl依赖

npm install echarts --save
npm install echarts-gl --save

2.制作地图JSON文件

在渲染3d地图之前,我们还需要到<<DATAV.GeoAltas地理小工具系列>>网站下载我们需要的json数据,这里我用浙江地图做示例下载好了json文件

注意!: DATAV.GeoAltas地理小工具系列最近访问显示 “服务升级中”,那么我们需要制作json文件怎么办?

  • 到网上直接搜索 “echarts地图json资源”
  • 通过python自己制作 >>>点击 教程

请添加图片描述

“zhejiang.json”

2.1 制作自己的json

我们还可以通过《geojson.io》 网站,自己规划区域进行地图边界绘制。请添加图片描述

3.引入到vue组件中

我们可以创建一个组件,创建一个Charts.vue文件,来渲染我们的3D地图
请添加图片描述

为了演示方便,我们可以在组件中局部引入echarts的依赖。
当然在项目中,因为需要重复使用我们也可以在vue中配置全局引入(此文章不做全局引入教程)

局部引入方式代码如下:

import geoJson from "./zhejiang.json"; //省份的json格式import * as echarts from 'echarts'; 
import "echarts-gl" //3D地图插件

4.创建一个有固定宽高大小的div元素

那么把依赖引入到vue组件后,我们就可以准备在html中创建一个有高度和宽度的div容器来放置echarts地图的canvas(注意这个div一定要宽高才可以渲染出地图)

html代码如下:

<template><div class="map"><div class="map-container"><div class="map-container-title">xxx标题</div><div class="map-chart" id="mapEchart"></div></div></div>
</template>

css代码如下:

<style lang="less" scoped>
.map {display: flex;justify-content: center;width: 100%;height: 100vh;.map-container {width: 100%;height: 100%;background: #fff;position: relative;.map-container-title {margin: 56px 0 16px;font-size: 24px;font-weight: 700;color: #333;line-height: 30px;display: flex;justify-content: center;}.map-chart {position: absolute;top: 0;left: 0;z-index: 5;height: 100%;width: 100%;}}
}
</style>

5.配置echarts参数

接下来我们可以在methods中配置echarts参数来渲染地图了!
代码如下:

chartMap() {var myChart = echarts.init(document.getElementById("mapEchart"));echarts.registerMap("zhejiang", geoJson);myChart.hideLoading();// 图表配置项let option = {geo3D: {map: "zhejiang",roam: true,itemStyle: {color: "#007aff",opacity: 0.8,borderWidth: 0.4,borderColor: "#000"// areaColor: '#fff'},viewControl: {autoRotate: true,autoRotateAfterStill: 3,distance: 120,minAlpha: 5, // 上下旋转的最小 alpha 值。即视角能旋转到达最上面的角度。[ default: 5 ]maxAlpha: 90, // 上下旋转的最大 alpha 值。即视角能旋转到达最下面的角度。[ default: 90 ]minBeta: -360, // 左右旋转的最小 beta 值。即视角能旋转到达最左的角度。[ default: -80 ]maxBeta: 360, // 左右旋转的最大 beta 值。即视角能旋转到达最右的角度。[ default: 80 ]animation: true, // 是否开启动画。[ default: true ]animationDurationUpdate: 1000, // 过渡动画的时长。[ default: 1000 ]animationEasingUpdate: "cubicInOut" // 过渡动画的缓动效果。[ default: cubicInOut ]},emphasis: {disabled: true, //是否可以被选中label: {//移入时的高亮文本show: true,color: "#333", //显示字体颜色变淡fontSize: 18 //显示字体变大},itemStyle: {color: "#ff7aff" //显示移入的区块变粉色}},label: {show: true,position: "top",color: "#111", //地图初始化区域字体颜色fontSize: 14,lineHeight: 16// textStyle: {//   color: "#fff", //地图初始化区域字体颜色//   fontSize: 12,//   opacity: 1,//   backgroundColor: "rgba(0,23,11,0)",// },},shading: "lambert",light: {//光照阴影main: {// color: "#fff", //光照颜色intensity: 1, //光照强度//shadowQuality: 'high', //阴影亮度shadow: true, //是否显示阴影shadowQuality: "medium", //阴影质量 ultra //阴影亮度alpha: 55,beta: 10},ambient: {intensity: 0.7}}},};myChart.setOption(option);}

6.挂载到mounted钩子,并且组件销毁时释放内存

最后一步,我们再monuted钩子上挂载配置好的echarts方法
重点如果我们有多级页面可以互相路由跳转,为了防止内存泄露,我们可以在beforeDestroy钩子上清除我们的echarts方法,释放内存提升项目性能!

  mounted() {this.chartMap();},beforeDestroy() {// 防止内存泄露if (!this.myChart) {return;}this.myChart.dispose();this.myChart = null;},

总结

请添加图片描述
在vue2中引入3d地图echarts是不是非常简单呢!下一期会带来3d地图3d柱状图,3d散点图和热力图的渲染方法


http://www.ppmy.cn/news/337534.html

相关文章

【超详细】基于大疆RoboMaster开发板C型的BMI088数据读取

【超详细】基于大疆RoboMaster开发板C型的BMI088数据读取 这里以博世传感器公司产出的BMI088型号的IMU为例&#xff0c;其里面有3轴高精度加速度计和3轴高精度陀螺仪&#xff0c;其他的特性不再介绍 同时这里的IMU是安装在大疆公司出产的RoboMaster开发板C型&#xff0c;单片机…

RK3588平台开发系列讲解(USB篇)USB Device端口组合配置过程

文章目录 一、configfs二、configfs 配置过程2.1、使能相关的宏2.2、挂载configfs2.3、创建名为g1的usb复合设备2.4、配置PID和VID2.5、创建并配置strings子目录2.6、创建configuration和字符串2.7、创建functions2.8、将functions和configuration关联起来2.9、绑定到UDC,使能…

Redis 缓存淘汰机制

Redis是一款高效的K-V数据库&#xff0c;本文主要是对redis中淘汰数据的机制进行一个简单的介绍。在redis中淘汰数据有俩种&#xff0c;一种是过期淘汰&#xff0c;另外一种是基于LRU淘汰算法的数据淘汰。 因为最近项目需要&#xff0c;打算实现一个简单的LRU算法缓存&#xf…

硬盘服务器哪个好用吗,服务器用固态硬盘好还是机械硬盘好

随着市面上的硬盘不断升级换代&#xff0c;高性价比的固态硬盘越来越受欢迎&#xff0c;原因是固态硬盘相比传统机械硬盘来说各方面性能更好。服务器固态硬盘跟机械硬盘的区别如下&#xff1a; 首先硬盘的基本参数包括容量&#xff0c;转速&#xff0c;平均访问时间&#xff0c…

计算机硬盘通过usb接口,并口硬盘转usb接口的方法介绍【详解】

可是在电脑上面识别不了后面的ide接口硬盘&#xff0c;在bios里面识别的是一个dvd光驱&#xff0c;串口硬盘是接在sata1&#xff0c;按照一般的思路来说&#xff0c;并口硬盘和串口硬盘当然可以一起用&#xff0c;条件是你主板必须有ide和sata接口.首先确认的是主板这2个接口是…

移动硬盘盒芯片(IDE)

有点经验的本友都知道&#xff0c;像硬盘盒这类东西&#xff0c;除了外观设计和用料做工之外&#xff0c;决定其性能的主要就是控制芯片&#xff0c;因此在这将目前市面上常见的移动硬盘盒控制芯片介绍一些&#xff0c;免得下手的时候糊涂~ 属于中高端的有ISD300A1、CY7C68300…

虚拟机黑裙加载硬盘_适合练手,在虚拟机中安装黑群晖,想要组建NAS服务器的看这里...

NAS也可以称之为私有云&#xff0c;无论是企业公司&#xff0c;还是家庭个人&#xff0c;能有一台NAS私有云服务器&#xff0c;在工作和生活中还是非常方便的&#xff0c;它可以摆脱国内云储存不安全、和谐、收费的缺点&#xff1b;可以及时备份你的WINDOWS电脑&#xff0c;MAC…

win7 硬盘变成移动设备_MacBook Pro硬盘改造有技巧,维修师傅便宜盘改原装,省了近千元...

接修一台MacBook ProA1502&#xff0c;13款&#xff0c;故障不通电&#xff0c;指示灯不亮&#xff0c;主板进了牛奶。 拆机&#xff0c;发现硬盘和EC部分进牛奶&#xff0c;和客户报价&#xff0c;留机维修。这种进液&#xff0c;已经凝固了&#xff0c;洗板水已经无能为力了&…