极致呈现系列之:Echarts地图的浩瀚视野(一)

news2024/11/25 18:51:26

目录

  • Echarts中的地图组件
  • 地图组件初体验
    • 下载地图数据
    • 准备Echarts的基本结构
    • 导入地图数据并注册
    • 展示地图数据
    • 结合visualMap展示地图数据

Echarts中的地图组件

Echarts中的地图组件是一种用于展示地理数据的可视化组件。它可以显示全国、各省市和各城市的地图,并支持自定义地图展示。地图组件提供了丰富的配置项,包括地图的颜色、标注、图例、缩放、拖拽等,可以满足不同需求的数据可视化展示。在地图组件中,可以通过数据标记、热力图、散点图等方式展示数据,同时支持地图事件的监听和触发,如点击、鼠标移入移出等事件。

在Echarts中,使用地图组件需要引入地图数据,Echarts提供了全国、各省市和各城市的地图数据,同时也支持自定义地图展示。自定义地图需要提供地图的json数据,包括地图的各个区域的名称、坐标等信息。通过配置项中的geo属性,可以设置地图的名称、标注、颜色、缩放等属性。通过配置项中的series属性,可以设置地图数据的展示方式,如数据标记、热力图、散点图等。同时,地图组件还支持地图事件的监听和触发,如点击、鼠标移入移出等事件。

地图组件初体验

下载地图数据

在使用地图组件之前,需要先下载相应的地图数据。地图数据可以到下面的网址进行下载:https://datav.aliyun.com/portal/school/atlas/area_selector

准备Echarts的基本结构

新建MapChart.vue组件,引入Echarts,并在组件中新建div,组织Echarts的基本结构

<template>
  <div ref="chart" style="width: 100%;height: 600px;"></div>
</template>
<script setup>
import * as echarts from 'echarts'
import { ref, onMounted, reactive } from 'vue' 
const chart = ref(null)

onMounted(() => {
  const myChart = echarts.init(chart.value)
  const option = {
  }
  myChart.setOption(option)
}) 
</script>

导入地图数据并注册

在MapChart.vue中导入我们上面下载的地图组件,

import cmap from '../assets/china.json'

使用echarts.registerMap()方法注册地图地图数据,通过该方法,我们可以将自定义的地图数据注册到Echarts中,以便在地图组件中使用。该方法的语法如下:

echarts.registerMap(mapName, geoJson, specialAreas?)

其中,参数说明如下:

  • mapName:地图名称,用于在地图组件中引用地图数据。
  • geoJson:地图数据,可以是GeoJSON格式的字符串或对象,也可以是包含多个GeoJSON格式的数组。
  • specialAreas(可选):特别地区的配置项,用于在地图中标注特别的区域,例如港澳台地区等。
    使用该方法注册地图数据后,我们就可以在Echarts中使用该地图了
<template>
  <div ref="chart" style="width: 100%;height: 600px;"></div>
</template>
<script setup>
import * as echarts from 'echarts'
import { ref, onMounted } from 'vue'
import cmap from '../assets/china.json'
const chart = ref(null)
// 注册中国地图数据
echarts.registerMap("china", cmap)
onMounted(() => {
  const myChart = echarts.init(chart.value)
  // 使用中国地图数据
  const option = {
    series: [{
      type: 'map',
      map: 'china'
    }]
  };
  myChart.setOption(option)
}) 

上述代码中,我们首先使用echarts.registerMap()方法注册了中国地图数据,然后在地图系列中使用map属性指定了地图名称为china。这样就可以在地图组件中展示中国地图了。

**注意:**我们在注册地图数据时定义的地图名称必须要和series中的map配置项的名称一致。
在这里插入图片描述
配置第三个参数: specialAreas(可选)特别地区配置项的示例:

// 注册中国地图数据
echarts.registerMap('china', chinaGeoJson, {
    '南海诸岛': {              // 地区名称
        left: 123,             // 地区位置,可以是数字、字符串或百分比
        top: 23,
        width: 10,             // 地区大小,可以是数字或百分比
        height: 10
    }
});

上述代码中,我们在使用echarts.registerMap()方法注册中国地图数据时,还传入了一个特别地区的配置项。其中,南海诸岛 表示特别地区的名称,lefttop表示特别地区在地图中的位置,widthheight表示特别地区的大小。配置完成后效果如下图所示:
在这里插入图片描述
在实际使用中,我们可以根据需要自定义特别地区的配置项。

展示地图数据

经过上面的配置将地图加载成功后,就需要根据我们的业务逻辑将实际需要展示的数据展示到地图上了,这里我们随机给一些数据,同时在series中配置roam属性为true开启鼠标滚轮放大缩小功能;配置label使地图显示文字标签;

series: [{
      type: 'map',
      map: 'china', 
      roam: true,//滚轮放大缩小
      label: {//显示文字标签
        show: true
      },
      data: [
        { name: '北京', value: Math.round(Math.random() * 1000) },
        { name: '天津', value: Math.round(Math.random() * 1000) },
        { name: '上海', value: Math.round(Math.random() * 1000) },
        { name: '重庆', value: Math.round(Math.random() * 1000) },
        { name: '河北', value: Math.round(Math.random() * 1000) },
        { name: '河南', value: Math.round(Math.random() * 1000) },
        { name: '云南', value: Math.round(Math.random() * 1000) },
        { name: '辽宁', value: Math.round(Math.random() * 1000) },
        { name: '黑龙江', value: Math.round(Math.random() * 1000) },
        { name: '湖南', value: Math.round(Math.random() * 1000) },
        { name: '安徽', value: Math.round(Math.random() * 1000) },
        { name: '山东', value: Math.round(Math.random() * 1000) },
        { name: '新疆', value: Math.round(Math.random() * 1000) },
        { name: '江苏', value: Math.round(Math.random() * 1000) },
        { name: '浙江', value: Math.round(Math.random() * 1000) },
        { name: '江西', value: Math.round(Math.random() * 1000) },
        { name: '湖北', value: Math.round(Math.random() * 1000) },
        { name: '广西', value: Math.round(Math.random() * 1000) },
        { name: '甘肃', value: Math.round(Math.random() * 1000) },
        { name: '山西', value: Math.round(Math.random() * 1000) },
        { name: '内蒙古', value: Math.round(Math.random() * 1000) },
        { name: '陕西', value: Math.round(Math.random() * 1000) },
        { name: '吉林', value: Math.round(Math.random() * 1000) },
        { name: '福建', value: Math.round(Math.random() * 1000) },
        { name: '贵州', value: Math.round(Math.random() * 1000) },
        { name: '广东', value: Math.round(Math.random() * 1000) },
        { name: '青海', value: Math.round(Math.random() * 1000) },
        { name: '西藏', value: Math.round(Math.random() * 1000) },
        { name: '四川', value: Math.round(Math.random() * 1000) },
        { name: '宁夏', value: Math.round(Math.random() * 1000) },
        { name: '海南', value: Math.round(Math.random() * 1000) },
        { name: '台湾', value: Math.round(Math.random() * 1000) },
        { name: '香港', value: Math.round(Math.random() * 1000) },
        { name: '澳门', value: Math.round(Math.random() * 1000) }
      ]
    }]

这样定义完成后,文字标签和鼠标的滚轮效果已经可以看到了,但是我们添加的数据还没有看到,这是我们可以添加tooltip配置项,使其在鼠标经过是弹出提示框

tooltip: {
      trigger: 'item',
      formatter: '{b}<br/>{c}亿元'
},

刷新浏览器,可以看到数据已经在提示框中显示了
在这里插入图片描述

结合visualMap展示地图数据

在实际的开发中我们往往会结合visualMap来展示地图数据的层级,视觉映射组件 visualMap可以将数据的大小和颜色映射到地图上,从而实现地图的数据可视化。在上面的代码中,添加visualMap配置项,代码如下:

   visualMap: {
      min: 0,
      max: 2000,
      left: 'left',
      top: 'bottom',
      text: ['高', '低'],
      calculable: true,
      inRange: {
        color: ['#e0ffff', '#006edd']
      }
    },

在上面的代码中,我使用了 visualMap 组件来将数据的大小映射到地图上,同时设置了 inRange 属性来定义数据映射的颜色范围。

可以看到,地图根据我们上面的数据大小显示了不同的颜色层级
在这里插入图片描述
OK,今天时间太晚了,关于Echarts中地图的使用方法,就先聊到这里,下次咱们接着聊,喜欢的小伙伴点赞关注加收藏哦!

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

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

相关文章

整形在内存中的存储-原码补码反码的理解与应用

目录 一、概论 1.1 C语言中基本的数据类型 1.2 类型的基本归类 二、整形在内存中的存储 2.1 原码、反码、补码 2.2 存储补码和大小端存储 三、计算各基本数据类型的范围计算原理 3.1 有符号类型的整形范围 3.2 无符号类型的整形范围 3.3 例题 一、概论 C语言提供了非常…

【Java基础学习打卡07】Java语言概述

目录 引言一、Java语言1.Java语言简介2.Java语言优势3.Java能做什么&#xff1f; 二、Java之父三、Java简史1.Java版本时间线2.Java发展重要节点 总结 引言 一、Java语言 1.Java语言简介 Java语言是一种以面向对象为基础的高级编程语言。吸收了C语言的各种优点&#xff0c;又…

【IMX6ULL驱动开发学习】06.APP与驱动程序传输数据+自动创建设备节点(hello驱动)

一、APP与驱动之间传输数据 /*驱动从APP获取数据*/ unsigned long copy_from_user(void *to, const void *from, unsigned long n)/*驱动传输数据到APP*/ unsigned long copy_to_user(void *to, const void *from, unsigned long n)二、使用copy_to_user、copy_from_user在AP…

32908字长文理解Large CV Model:Segment Anything

作者&#xff1a;猛码Memmat 目录 Abstract1. IntroductionTaskModelData engineDatasetResponsible AIExperimentsRelease 2. Segment Anything TaskTaskPre-trainingZero-shot transferRelated tasksDiscussion 3. Segment Anything ModelImage encoderPrompt encoderMask de…

十个实用MySQL函数

函数 0. 显示当前时间 命令&#xff1a;。 作用: 显示当前时间。 应用场景: 创建时间&#xff0c;修改时间等默认值。 例子&#xff1a; 1. 字符长度 命令&#xff1a;。 作用: 显示指定字符长度。 应用场景: 查看字符长度时。 例子&#xff1a; 2. 日期格式化 命令…

【群智能算法改进】一种改进的白鲸优化算法 改进白鲸优化算法 改进后的EBWO[1]算法【Matlab代码#40】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始BWO算法2. 改进的白鲸优化算法EBWO2.1 Logistic映射2.2 透镜成像折射方向学习 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始BWO算法 白鲸优化算法 (BWO&…

LeetCode —— 206. 反转链表

LeetCode —— 206. 反转链表 一、题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head …

【Shiro】第二章 Shiro概述

目录 1、Shiro简介 2、核心组件 1、Shiro简介 【1】什么是Shiro? Shiro是apache旗下一个开源框架&#xff0c;它将软件系统的安全认证相关的功能抽取出来&#xff0c;实现用户身份认证&#xff0c;权限授权、加密、会话管理等功能&#xff0c;组成了一个通用的安全认证框…

华为OD机试真题 JavaScript 实现【租车骑绿道】【2023Q1 100分】

一、题目描述 部门组织绿岛骑行团建活动&#xff0c;租用公共双人自行车骑行&#xff0c;每辆自行车最多坐两人、最大载重 M。 给出部门每个人的体重&#xff0c;请问最多需要租用多少双人自行车。 二、输入描述 第一行两个数字 m、n&#xff0c;自行车限重 m&#xff0c;代…

管理类联考——逻辑——技巧篇——论说文模块

正论模块 一直为社会、企业所重视。正是因为___让我们在应对挑战中超越自我&#xff0c;形成了一种保持可持续发展的能力与定力,涵养了自强不息、卧薪尝胆的品质&#xff0c;弥补了心智和能力的短板。古今中外这样的事例比比皆是/正如__所言“__”(事实证据或引典&#xff09;…

Mybatis学习之插件

Mybatis学习之插件 Plugins Mybatis中的插件虽然名称叫插件&#xff0c;但实质上是通过动态代理实现的。和我们平时讲的插件概念不一样&#xff0c;但是本质上都是给外部提供接口进行扩展。 MyBatis 允许我们在映射语句执行过程中的某一点进行拦截调用。MyBatis允许我们使用…

【C/C++】引用()的概念和用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

推荐几款可以大幅提高开发效率的vscode插件

1、Vue 2 Snippets 这是一款基于vue2的代码片段提示插件&#xff0c;特别好用&#xff0c;可以有效的提高我们的编码速度。 他的能力非常强大&#xff0c;具体还需要我们去看他的文档文档地址 &#xff0c;解锁更多能力。 2、Path Autocomplete 这是一款路劲提示插件 vscod…

计算机网络实验第一课:HTTP和DNS

实验准备 1.先安装好wireshark 2.开启抓包&#xff0c;然后用过滤器选中http。 3.输入http://gaia.cs.umass.edu 网址&#xff0c;摁下回车键。&#xff08;这里我做实验的时候出了点意外&#xff0c;我一开始开着梯子&#xff0c;然后一直都是通过代理访问的网页&#xff…

Spring Security Oauth2.1 最新版 1.1.0 整合 (基于 springboot 3.1.0)gateway 完成授权认证

目录 背景 版本 Spring Boot 3.1 Spring Authorization Server 1.1.0官方文档 基础 spring security OAuth2.0 模块构成 授权方式 集成过程 官方demo 代码集成 依赖 授权服务AuthorizationServerConfig配置 重要组件 测试 查看授权服务配置 访问授权服务 授…

简单实用的快递查询工具,支持批量查询

大家如果遇到快递一直没到的情况&#xff0c;是不是会很心急呢&#xff1f;这时候就要去查询一下快递具体的运输轨迹了&#xff0c;看看自己的快递运输到哪里了。今天小编给大家推荐一款快递信息查询软件&#xff1a;“固乔快递查询助手”&#xff0c;这款软件能够自动识别单号…

管理类联考——英语——知识篇——考研英语熟词生义

考研英语熟词生义 A 1.abandon【生义】放松&#xff0c;沉溺 2.abide【【生义】容忍&#xff0c;经受住 3.abroad【生义】广为流传&#xff0c;传开 4.abrupt【生义】陡峭的&#xff0c;险峻的 5.absent【生义】漫不经心的 6.absolute【【生义】基本的 7.absorb【生义】…

Redis 发布和订阅详细介绍

发布和订阅 发布和订阅是什么 一句话&#xff1a;Redis 发布订阅(pub/sub) 是一种消息通信模式&#xff1a;发送者(pub) 发送消息&#xff0c;订阅者(sub) 接收消息 Redis 客户端可以订阅任意数量的频道 一图胜千言 1、客户端订阅频道示意图 2、当给这个频道发布消息后&am…

[CKA]考试之网络策略NetworkPolicy

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 在现有的namespace fubar中创建一个名为allow-port-from-namespace的新Netwo…

云原生时代崛起的编程语言Go远程调用gRPC实战

文章目录 概述定义背景特点四种服务方法 实战环境配置proto文件简单RPCToken认证服务器流式RPC客户端流式RPC双向流式RPC 概述 定义 gRPC 官网地址 https://grpc.io/ 源码release最新版本v1.55.1 gRPC 官网文档地址 https://grpc.io/docs/ gRPC 源码地址 https://github.com/g…