Vue+Echarts 实现中国地图和飞线效果

embedded/2024/9/24 6:23:20/

目录

    • 实现效果
    • 准备

实现效果

在这里插入图片描述

在线预览:https://mouday.github.io/vue-demo/packages/china-map/dist/index.html

准备

高版本的echarts,不包含地图数据,需要自己下载到项目中

1、地图数据下载

https://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&lng=106.72278672066881&zoom=3.5

2、注册地图到echarts

//根据自身情况,粘贴来的数据放在哪里就从哪里导入
import chinaMap from "@/assets/map/china.json";//注册地图到echarts中  这里的 "china" 要与地图数据的option中的geo中的map对应
echarts.registerMap("china", { geoJSON: chinaMap });

为了能复现效果,给出了项目的完整结构和完整代码

项目结构

$ tree -I node_modules
.
├── package.json
└── src├── App.vue├── ChinaMap.vue├── main.js└── utils├── event-util.js└── map-util├── china.json├── index.js└── map-data.js

package.json

{"scripts": {"dev": "vue-cli-service serve","build": "vue-cli-service build"},"dependencies": {"echarts": "^5.5.0","element-ui": "^2.15.11","vue": "^2.6.14"},"devDependencies": {"@vue/cli-service": "^5.0.8","less": "^4.0.0","less-loader": "^8.0.0","vue-template-compiler": "^2.6.14"}
}

ChinaMap.vue

主要有3个部分:地图、线条、点

<template><div class="chartMap" ref="chinaMap"></div>
</template><script>
import * as echarts from "echarts";
import "@/utils/map-util/index.js"; // 注册地图数据
import { chinaRegions } from "@/utils/map-util/map-data.js";// 事件监听工具类
import * as eventUtil from "@/utils/event-util.js";export default {name: "dataView",data() {return {chinaMap: "", // 地图};},created() {},mounted() {this.init();},beforeDestroy() {eventUtil.off(window, "resize", this.handleWindowResize);},methods: {handleWindowResize() {//动态改变图表尺寸this.chinaMap.resize();},init() {this.getMap(); // 地图},// 地图getMap() {this.chinaMap = echarts.init(this.$refs.chinaMap);let option = {// 设置地图样式geo: {map: "china",zoom: 1.2,layoutSize: "100%", //保持地图宽高比// 设置图块颜色,也可以通过图例 visualMap 设置颜色,但是飞线的颜色设置会失效,一直取 图例 设置的颜色;根据需求选择;regions: chinaRegions,label: {// 默认样式normal: {show: false,fontSize: "10",color: "rgba(255,255,255,.3)",},// 高亮样式emphasis: {show: true,textStyle: {color: "#1955a4",},},},itemStyle: {// 默认样式,图块没数据时,会取默认颜色normal: {borderColor: "#c0e0e3",areaColor: "#29c5f6",opacity: 0.8,},// 高亮样式emphasis: {areaColor: "#f2d5ad",},},},series: [// 设置飞线样式{type: "lines",coordinateSystem: "geo",zlevel: 100,effect: {show: true,period: 4, // 图标飞跃速度,值越小速度越快trailLength: 0.2, // 尾迹长度[0,1]值越大,尾迹越长symbol: "pin", // 图标类型symbolSize: 4, // 图标大小color: "#f5f3b3", // 图标颜色},lineStyle: {color: "#000",normal: {show: true,width: 1, //尾迹线条宽度opacity: 0.1, //尾迹线条透明度curveness: 0.3, //尾迹线条曲直度color: "#44add00f", // 飞线颜色},},// 飞线数据data: [[{// 出发coord: [117.1582, 36.8701], // 山东value: 1,},{// 目的地coord: [116.4551, 40.2539], // 北京},],[{// 出发coord: [110.3893, 19.8516], // 海南value: 1,},{// 目的地coord: [116.4551, 40.2539], // 北京},],],},// 中心点设置{type: "effectScatter",coordinateSystem: "geo",zlevel: 15,rippleEffect: {period: 3,brushType: "fill", // 动画样式 fill strokescale: 60,color: "#7ce7fd",number: 2,},symbol: "circle", // 图标样式symbolSize: 2,itemStyle: {color: "#5cc8d4",},// 中心点数据data: [{name: "北京",value: [116.4551, 40.2539, 10],},],},],};this.chinaMap.setOption(option);eventUtil.on(window, "resize", this.handleWindowResize);},},
};
</script><style lang="less">
.chartMap {width: 500px;height: 500px;background: #132d48;
}
</style>

源码地址:https://github.com/mouday/vue-demo

参考文章

  • Echarts 实现中国地图 + 飞线效果

http://www.ppmy.cn/embedded/13006.html

相关文章

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…

禅道安装(非docker 版本)(一键部署版)

1.安装包下载地址 https://www.zentao.net/dl/zentao/18.5/ZenTaoPMS.18.5.zbox_64.tar.gzLinux一键安装包内置了Apache、PHP、MySQL和XXD 服务&#xff0c;不需要再单独安装。 2.上传到linux服务器 scp /Users/admin/Downloads/ZenTaoPMS.18.5.zbox_64.tar.gz root192.168.…

OneFlow新概念清单,AI深度学习的革命性突破(AI写作)

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

单链表的应用

文章目录 目录1. 单链表经典算法OJ题目1.1 [移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/description/)1.2 [链表的中间节点](https://leetcode.cn/problems/middle-of-the-linked-list/description/)1.3 [反转链表](https://leetcode.cn/problem…

Linux fcntl函数

fcntl函数 读法&#xff1a;file control函数 作用&#xff1a;复制文件描述符、设置/获取文件的状态标志 int fcntl(int fd, int cmd, ... /* arg */ )fd是文件描述符&#xff0c;cmd是命令&#xff08;定义的宏&#xff09;&#xff0c;… 表示可变的参数&#xff08;可有可…

Harmony OS应用开发性能优化全面指南

优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度&#xff0c;可以有效提升用户体验。本文将介绍一些优化应用性能的方法&#xff0c;以及常用的性能调优工具。 ArkTS高性能编程 为了提升代码执行速度&#xff0c;进而提升应用整体性…

LeetCode刷题实战4:寻找两个正序数组的中位数

题目内容 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&#xff1a;2.0…

redis中的缓存穿透问题

缓存穿透 缓存穿透问题&#xff1a; 一般请求来到后端&#xff0c;都是先从缓存中查找数据&#xff0c;如果缓存中找不到&#xff0c;才会去数据库中查询数据。 而缓存穿透就是基于这一点&#xff0c;不断发送请求查询不存在的数据&#xff0c;从而使数据库压力过大&#xff…