Vue3+echarts绘制世界地图

先放效果图

 之前所查找的资料都没有讲清楚如何引入地图文件并绘制地图,下面做一个记录。

首先下载对应的地图json文件,这里可以参考我的这篇文章,提供了下载地址:记录echarts各种地图json文件下载地址-CSDN博客

第二步,在绘制地图的vue组件中导入该json文件。解释第三个import,world可以随便改名字,在下面第三步注册地图的时候对应第二个world。

import {defineComponent, toRaw} from "vue";
import axios from "axios";
import world from "@/assets/json/world.json"

第三步,定义图表并配置图表。注意在注册地图的时候,第一个是地图的名称,第二个是在import的时候给json文件取的名字

// 定义图表this.$echarts.registerMap('world', world)let map_off = this.$echarts.init(document.getElementById("world_map_off"), "football_customed");
// 配置图表map_off.setOption(option)// 图表响应式改变window.addEventListener('resize', function () {map_off.resize();

下面给出完整代码(script),template部分只需要设置对应的图表id即可


<script>
import {defineComponent, toRaw} from "vue";
import axios from "axios";
import world from "@/assets/json/world.json"export default defineComponent({data() {return {num: [],}},methods: {competition() {// 获取需要的数据let zhuchang_data = []let kechang_data = []axios.get("http://127.0.0.1:5000/competition").then(res => {// 获取数据zhuchang_data = toRaw(res.data.zhuchang_data)kechang_data = toRaw(res.data.kechang_data)console.log(zhuchang_data)console.log(kechang_data)//  生成出线方法function formtGCData(geoData, data, srcNam, dest) {var tGeoDt = []if (dest) {for (var i = 0; i < data.length; i++) {if (srcNam !== data[i].name) {tGeoDt.push({coords: [geoData[srcNam], geoData[data[i].name]]})}}} else {for (var j = 0; j < data.length; j++) {if (srcNam !== data[j].name) {tGeoDt.push({coords: [geoData[data[j].name], geoData[srcNam]]})}}}return tGeoDt}//  生成进线方法function formtVData(geoData, data, srcNam) {var tGeoDt = []for (var i = 0; i < data.length; i++) {var tNam = data[i].nameif (srcNam !== tNam) {tGeoDt.push({name: tNam,value: geoData[tNam]})}}tGeoDt.push({name: srcNam,value: geoData[srcNam],symbolSize: 8,})tGeoDt.forEach((item) => {if (item.name === 'china') {item.itemStyle = {color: 'red'}} else {item.itemStyle = {color: '#9E992F'}}})return tGeoDt}// 显示点的坐标let geoCoordMap = {china: [117.3, 41.03],Botswana: [24.68, -22.33],Canada: [-110.895168, 60.2312],Brazil: [-50.895168, -10.2312],};// 所在点对应数据,上面数据添加修改后务必这里添加修改,value可不用let data = [{id: 1,name: 'china',}, {id: 2,name: 'Botswana',}, {id: 3,name: 'Canada',}, {id: 4,name: 'Brazil',}]//箭头类型 //''circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin',  'arrow', 'none''var planePath = 'arrow'// 定义图表this.$echarts.registerMap('world', world)let world_map = this.$echarts.init(document.getElementById("world_map"), "football_customed");// 定义主场图表的配置let option = {geo: {type: "map",map: 'world',zoom: 1.2,//地图的缩放label: {emphasis: {show: true,color: '#fff'}},roam: true,//是否滚动缩放regions: [{name: 'China', //这个名字可以是map(世界地图),China(中国地图高亮)itemStyle: {normal: {areaColor: '#480103',borderColor: '#ffc107',borderWidth: 1,},emphasis: {areaColor: '#b40106',},},},],itemStyle: {normal: {areaColor: '#690613',borderColor: 'rgba(255,255,255,0.6)',//国界线颜色borderType: 'dotted',//国界线类型},emphasis: {areaColor: '#ad9541'}},},series: [{type: 'lines',//飞线zlevel: 1,effect: {show: true,period: 6,trailLength: 0.1,color: '#fff',//箭头颜色symbol: planePath,symbolSize: 8,},lineStyle: {normal: {color: '#278FA2',//线的颜色width: 1,opacity: 0.4,curveness: 0.2,type: 'dotted',//'dotted'点型虚线 'solid'实线 'dashed'线性虚线},emphasis: {type: 'dotted',color: 'yellow',//线的颜色}},data: formtGCData(geoCoordMap, data, 'china', false)},{type: 'scatter',//圆点coordinateSystem: 'geo',zlevel: 10,symbolSize: 10,hoverAnimation: false,silent: true,data: formtVData(geoCoordMap, data, 'Brazil')},]}// 配置图表world_map.setOption(option)// 图表响应式改变window.addEventListener('resize', function () {world_map.resize();});})},competition_off() {// 获取需要的数据let zhuchang_data = []let kechang_data = []axios.get("http://127.0.0.1:5000/competition").then(res => {// 获取数据zhuchang_data = toRaw(res.data.zhuchang_data)kechang_data = toRaw(res.data.kechang_data)//  生成出线方法function formtGCData(geoData, data, srcNam, dest) {var tGeoDt = []if (dest) {for (var i = 0; i < data.length; i++) {if (srcNam !== data[i].name) {tGeoDt.push({coords: [geoData[srcNam], geoData[data[i].name]]})}}} else {for (var j = 0; j < data.length; j++) {if (srcNam !== data[j].name) {tGeoDt.push({coords: [geoData[data[j].name], geoData[srcNam]]})}}}return tGeoDt}//  生成进线方法function formtVData(geoData, data, srcNam) {var tGeoDt = []for (var i = 0; i < data.length; i++) {var tNam = data[i].nameif (srcNam !== tNam) {tGeoDt.push({name: tNam,value: geoData[tNam]})}}tGeoDt.push({name: srcNam,value: geoData[srcNam],symbolSize: 8,})tGeoDt.forEach((item) => {if (item.name === 'china') {item.itemStyle = {color: 'red'}} else {item.itemStyle = {color: '#9E992F'}}})return tGeoDt}// 显示点的坐标let geoCoordMap = {china: [117.3, 41.03],Botswana: [24.68, -22.33],Canada: [-110.895168, 60.2312],Brazil: [-50.895168, -10.2312],};// 所在点对应数据,上面数据添加修改后务必这里添加修改,value可不用let data = [{id: 1,name: 'china',}, {id: 2,name: 'Botswana',}, {id: 3,name: 'Canada',}, {id: 4,name: 'Brazil',}]//箭头类型 //''circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin',  'arrow', 'none''var planePath = 'arrow'// 定义图表this.$echarts.registerMap('world', world)let map_off = this.$echarts.init(document.getElementById("world_map_off"), "football_customed");// 定义主场图表的配置let option = {geo: {type: "map",map: 'world',zoom: 1.2,//地图的缩放label: {emphasis: {show: true,color: '#fff'}},roam: true,//是否滚动缩放regions: [{name: 'China', //这个名字可以是map(世界地图),China(中国地图高亮)itemStyle: {normal: {areaColor: '#480103',borderColor: '#ffc107',borderWidth: 1,},emphasis: {areaColor: '#b40106',},},},],itemStyle: {normal: {areaColor: '#690613',borderColor: 'rgba(255,255,255,0.6)',//国界线颜色borderType: 'dotted',//国界线类型},emphasis: {areaColor: '#ad9541'}},},series: [{type: 'lines',//飞线zlevel: 1,effect: {show: true,period: 6,trailLength: 0.1,color: '#fff',//箭头颜色symbol: planePath,symbolSize: 8,},lineStyle: {normal: {color: '#278FA2',//线的颜色width: 1,opacity: 0.4,curveness: 0.2,type: 'dotted',//'dotted'点型虚线 'solid'实线 'dashed'线性虚线},emphasis: {type: 'dotted',color: 'yellow',//线的颜色}},data: formtGCData(geoCoordMap, data, 'china', false)},{type: 'scatter',//圆点coordinateSystem: 'geo',zlevel: 10,symbolSize: 10,hoverAnimation: false,silent: true,data: formtVData(geoCoordMap, data, 'Brazil')},]}// 配置图表map_off.setOption(option)// 图表响应式改变window.addEventListener('resize', function () {map_off.resize();});})},},mounted() {this.competition()this.competition_off()},
})</script>

核心步骤:下载对应的地图文件;在script中导入json文件;echarts注册地图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记本和台式机主板内部结构分析

笔记本和态势机主板内存接口以及配件安装位置 笔记本主板 1 以thinkpad L-490为例,使用拆机小工具拆机&#xff0c;打开后面板&#xff0c;内部结构示意图如下 台式机主板 以技嘉-B660M-AORUS-PRO-AX型号主板为例 笔记本电脑和台式机电脑的相同之处 CPU&#xff1a;笔记本…

IOS面试题编程机制 36-40

36. 阐述IOS ViewController生命周期?1. initWithCoder:通过nib文件初始化时触发。 2. awakeFromNib:nib文件被加载的时候,会发生一个awakeFromNib的消息到nib文件中的每个对象。 3. loadView:开始加载视图控制器自带的view。 4. viewDidLoad:视图控制器的view被加载完成…

【boost_search搜索引擎】1.获取数据源

boost搜索引擎 1、项目介绍2、获取数据源 1、项目介绍 boost_search项目和百度那种不一样&#xff0c;百度是全站搜索&#xff0c;而boost_search是一个站内搜索。而项目的宏观上实现思路就如同图上的思路。 2、获取数据源 我们要实现一个站内搜索&#xff0c;我们就要有这…

【No.15】蓝桥杯动态规划上|最少硬币问题|0/1背包问题|小明的背包1|空间优化滚动数组(C++)

DP初步&#xff1a;状态转移与递推 最少硬币问题 有多个不同面值的硬币(任意面值)数量不限输入金额S&#xff0c;输出最少硬币组合。 回顾用贪心求解硬币问题 硬币面值1、2、5。支付13元&#xff0c;要求硬币数量最少 贪心: (1)5元硬币&#xff0c;2个 (2)2元硬币&#xff0c…

【微服务】设计弹性微服务架构模式

目录 模式#1 — 超时模式#2 — 重试模式#3— 隔离模式#4— 断路器模式#5 — 冗余推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战在微服务架构中,服务通常相互协作以提供业务用例。这些服务可能在可用性、可伸缩性、弹性等方面具有…

LeetCode-热题100:3. 无重复字符的最长子串

题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字…

数据分析-Pandas分类数据的比较如何避坑

数据分析-Pandas分类数据的比较如何避坑 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表…

Lombok简单使用

1、介绍 Lombok是一个Java库&#xff0c;它通过注解的方式简化了Java代码的编写。它提供了一些注解&#xff0c;可以自动生成一些常用的代码&#xff0c;如getter和setter方法、构造函数、equals和hashCode方法等。使用Lombok可以减少冗余的代码&#xff0c;提高开发效率。 2…

Rust 程序设计语言学习——结构体

结构体和元组类似&#xff0c;它们都包含多个相关的值。和元组一样&#xff0c;结构体的每一部分可以是不同类型。但不同于元组&#xff0c;结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字&#xff0c;结构体比元组更灵活&#xff1a;不需要依赖顺序来…

医院预约挂号系统设计与实现|jsp+ Mysql+Java+ Tomcat(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

【WPF应用11】如何对StackPanel中的控件进行间距设置?

在WPF中&#xff0c;堆叠面板&#xff08;StackPanel&#xff09;是一个常用的布局控件&#xff0c;它允许您将子控件垂直或水平堆叠起来。在设计用户界面时&#xff0c;合理的间距设置可以提高界面的美观性和易用性。本文将介绍如何在StackPanel控件中设置控件之间的间距&…

初识kafka-数据存储篇1

目录 背景 1 kafka总体体系结构 2 疑问解答 2.1 高吞吐低延迟 2.2 实现分布式存储和数据读取 2.3 如何保证数据不丢失 背景 最近在和产品过项目审批的时候&#xff0c;深刻感受到业务方对系统的时时响应提出了更高的要求。目前手上大部分的业务都是基础定时任务去实现的&…

nodejs+vue高校会议室预订管理系统python-flask-django-php

伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对系统进行规范而严格是十分有必要的&#xff0c;所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套高校会议室预订管理系统&#xff0c;帮助学校进行会议…

JDK,JRE,JVM之间的关系

他们明面上的关系是JDK包含JRE&#xff0c;JRE包含JVM。 简单理解JDK就是Java开发工具包。JRE是Java运行环境。JVM是Java虚拟机。 JDK是面向开发者的&#xff0c;JRE是面向JAVA程序的用户的。也就是说开发者开发JAVA程序是需要用到JDK&#xff0c;如果用户不去开发JAVA程序&am…

【WPF应用10】基本控件-StackPanel:布局原理与实际应用

在Windows Presentation Foundation&#xff08;WPF&#xff09;中&#xff0c;布局是用户界面设计的核心部分&#xff0c;它决定了控件如何排列和空间如何分配。WPF提供了一系列布局面板&#xff08;Panel&#xff09;&#xff0c;以便开发者可以根据需要灵活地组织控件。在这…

OpenHarmony IDL工具规格及使用说明书(仅对系统应用开放)

IDL接口描述语言简介 当客户端和服务器进行IPC通信时&#xff0c;需要定义双方都认可的接口&#xff0c;以保障双方可以成功通信&#xff0c;OpenHarmony IDL&#xff08;OpenHarmony Interface Definition Language&#xff09;则是一种定义此类接口的工具。OpenHarmony IDL先…

掌握 Unity 中的状态机:综合指南

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢你的关注…

初识 Redis 浅谈分布式

目 录 一.认识 Redis二.浅谈分布式单机架构分布式是什么数据库分离和负载均衡理解负载均衡数据库读写分离引入缓存数据库分库分表引入微服务 三.概念补充四.分布式小结 一.认识 Redis 在 Redis 官网我们可以看到介绍 翻译过来就是&#xff1a;数以百万计的开发人员用作缓存、…

nodejs+vue高校社团管理小程序的设计与实现python-flask-django-php

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低学校的运营人员成本&#xff0c;实现了高校社团管理的标准化、制度化、程序化的管理&#xff0c;有效地防止了高校社团管理的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准…

t-rex2开放集目标检测

论文链接&#xff1a;http://arxiv.org/abs/2403.14610v1 项目链接&#xff1a;https://github.com/IDEA-Research/T-Rex 这篇文章的工作是基于t-rex1的工作继续做的&#xff0c;核心亮点&#xff1a; 是支持图片/文本两种模态的prompt进行输入&#xff0c;甚至进一步利用两…