Vue使用echarts地图进阶2(实现多级下钻功能)

2023-11-09

echarts地图实现多级下钻功能

点击下钻效果图:
在这里插入图片描述
先来小看一下,多级下钻和单次下钻跳转json文件的区别:

1、如果要实现多级下钻并且展示子区域的话,下钻点击事件请求的JSON必须是该点击区域的全面父级JSON(即没有自己,只有孩子们组成)
在这里插入图片描述

2、如果要实现地图只下钻一次,并且不展示目标下钻区域的子区域。如第一层地图是中国,实现点击某个省下钻到该省,但是不展示该省的子区域,那么下钻点击事件请求的JSON必须是该点击区域的确切json(即只有自己,没有孩子们)
在这里插入图片描述

直接上代码

1、该页面涉及到的关键函数有三个:getGeoJson()、initChart()、initEcharts()
2、该页面结合了axios动态请求json文件数据

<!--实现全国地图下钻,由于涉及JSON文件较多,所以就直接引用在线JSON https://geo.datav.aliyun.com/areas_v3/bound/-->
<template>
	<div>
		<div class="areaRankingAll" ref="areaRankingAll" :style="{width: '700px', height: '500px',}">
		</div>
		<div>
			<button type="button" @click="cancel">返回上一级</button>
		</div>
	</div>
</template>

<script>
	import axios from 'axios'//采用axios动态请求数据
	var echarts = require('echarts')
	export default {
		name: "areaRankingAll",
		mounted() {
			this.initChart();//初始化地图
		},
		data(){
			return{
				myChart: null,
				//线上请求JSON文件数据地址
				publicUrl:"https://geo.datav.aliyun.com/areas_v3/bound/",
				//allCode 区域行政编码信息
				allCode:[
					// {name:"廉江市",adcode:"440881"}
				],
			}
		},
		methods: {
			cancel(){
				this.initChart();
			},
			getGeoJson(jsonName){
				return axios.get(this.publicUrl+jsonName)
			},
			initEcharts(geoJson, name, chart) {
				let self = this;
				// this.myChart = echarts.init(this.$refs.areaRankingAll);
				echarts.registerMap(name, geoJson);
				let option = {
					title: {
						text: name,
					},
					tooltip: {
						trigger: 'item',
						formatter: '{b}<br/>{c} (数量)'
					},
					visualMap: {
						min: 100,
						max: 5000,
						text: ['High', 'Low'],
						realtime: false,
						calculable: true,
						inRange: {
							color: ['lightskyblue', 'yellow', 'orangered']
						}
					},
					series: [{
						type: 'map',
						map: name,
						label: {
							// show: true
						},
						data: [],
					}]
				}
				chart.setOption(option);
				chart.off("click");
				chart.on('click',params=>{
					//点击区域时的行政编码,然后再进行匹配
					let clickCode = self.allCode.filter(areaJson => areaJson.name === params.name)[0].adcode;
					//1、如果要实现多级下钻并且展示子区域的话,下钻点击事件请求的JSON必须是该点击区域的全面父级JSON(即没有自己只有孩子们组成)
					//2、如果要实现地图只下钻一次,并且不展示目标下钻区域的子区域。如第一层地图是中国,实现点击某个省下钻到该省,但是不展示该省的子区域,那么下钻点击事件请求的JSON必须是该点击区域的确切json(即只有自己没有孩子们)
					//声明:比如这里线上引用的父级JSON带有:地域行政编码_full.json(如中国 100000_full.json),子级JSON是行政编码.json(如廉江市 440881.json)
					self.getGeoJson(clickCode + '_full.json').then(res =>{
						self.initEcharts(res.data, params.name, chart)
					}).catch(err =>{
						console.log(err,"err")
						self.getGeoJson('100000_full.json').then(China => {
							self.initEcharts(China.data, '中华人民共和国', chart)
						})
					})
					console.log(params);
				})
			},
			//带头函数-初始化
			initChart(){
				let chart = echarts.init(this.$refs.areaRankingAll);
				//this.allCode获取所有的区域编码信息
				this.getGeoJson('all.json').then(all => {
					this.allCode = all.data;
				});
				//初始化地图展示
				this.getGeoJson('100000_full.json').then(China => {
					this.initEcharts(China.data, '中华人民共和国', chart);
				});
			}
		}
	}
</script>

<style scoped>

</style>

另:若实现地图只下钻一次,并且不展示目标下钻区域的子区域,参考这篇Vue使用echarts地图进阶1(实现单次下钻功能)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue使用echarts地图进阶2(实现多级下钻功能) 的相关文章

  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • AngularJS 指令 - 设置多个指令元素的顺序(不是指令的优先级,而是元素的优先级)

    考虑带有指令 foo 的标记 div div div div div div 使 foo 按指定顺序而不是从上到下 3 1 2 运行的好方法是什么 我唯一能想到做的就是跟踪已运行的内容并在不按顺序的项目上返回 false 然后让 Angul
  • 在 Javascript 中,有什么方法可以知道从哪个主机脚本加载?

    在javascript中 作为从某个主机加载的脚本 有什么方法可以知道我是从哪个服务器 主机加载的 我需要向该主机发出额外的 ajax 请求 并且更愿意动态地找出主机 因此 如果您在页面上包含 javascript 文件 当该 javasc
  • 当名称是数组时如何使用 Javascript 修改 HTML Select

    我有两个同名的 html select 对象 它们是具有不同索引的数组 我想做的是 如果从类别 0 选择元素中选择 关闭 我想禁用类别 1 元素 我一直在尝试使用 document getElementsByName 但无法弄清楚如何专门针
  • 使用javascript在谷歌地图中绘制多边形

    我想在谷歌地图中绘制多边形 我正在使用示例代码http jsfiddle net rvsMH 1 http jsfiddle net rvsMH 1 但它不起作用并且没有获取数组或纬度 经度值 我不知道出了什么问题
  • jqgrid 在编辑框中选择不正确的下拉选项值

    我正在使用表单编辑 表单中有两个选择框 一个选择框是国家 地区 另一个选择框是州 州选择框取决于所选的国家 地区 并将动态填充 例如 Country 美国 期权价值 1 英国 期权价值 2 美国的状态 阿拉巴马州 选项值 1 加利福尼亚州
  • javascript中文本区域限制每行的字符数

    我试图用 javascript 限制文本区域中每行的字符数 我在这里看到了一些例子 但并不完全符合我的要求 我写了一些东西 只有当你每次添加超过限制时才可以 换句话说 我每行有 10 个字符的限制 如果你总是输入至少 10 个字符就可以正常
  • 如何处理 d3 中 Beeswarm 图中的碰撞?

    我一直在玩这个例子here https gf neocities org co2bs co2bee html一会儿 我想做的是突出显示图中的单个节点 圆圈 通过使用边框使其变大 稍后我也想在其中添加文本或字母 目前 我已经圈了Bhutan图
  • 如何在 jQuery 中使用 CSS“background-image”属性添加的图像上绑定单击事件

    这是我的小提琴link http jsbin com otisur 1 edit 我想我的问题通过标题本身就很清楚了 尽管如此 我正在寻找一种绑定的方法click使用 css 添加的图像上的事件background image财产 我知道
  • JavaScript 逻辑赋值是如何工作的?

    在 javascript 中 如果我们有一些代码 例如 var a one var b q a alert b 逻辑 OR 运算符会将 a 的值分配给 b 并且警报将为 一 这仅限于作业还是我们可以在任何地方使用它 似乎空字符串被视为与未定
  • JQuery 可排序嵌套可排序 div

    这个问题与这个有关Nest jQuery UI 可排序 https stackoverflow com questions 19129476 nest jquery ui sortables 但我无法解决我的问题 问题是 我有一个包含项目的
  • 使用 jQuery 的 javascript 关联数组长度

    我正在使用 javascript 关联数组 例如 var testarray testarray one 1 testarray two 2 testarray three 3 我也在旁边使用jquery 如何使用 jquery 或任何其他
  • json、rails、javascript 中的解析错误

    我需要将 ruby 数组放入 javascript 数组中 但出现解析错误 var characters 这就是我将 ruby 嵌入到内联 javascript 中的方式 但它出现了解析错误 我应该如何将此 ruby 数组放入 javasc
  • 测量填写部分的时间 - 谷歌表单

    我正在尝试使用谷歌表单进行研究调查问卷 对于某些部分 我想自动测量用户填写所需的时间 谷歌表单中没有这样的选项 我尝试复制表单源 并用 javascript 填充时间 但它不起作用 跨源问题 未能成功托管复制的表单 如何做到 我如何衡量回答
  • 将数字限制为段的最优雅的方法是什么?

    比方说x a and b是数字 我需要限制x到段的边界 a b 换句话说 我需要一个钳位功能 https math stackexchange com q 1336636 clamp x max a min x b 有人能想出一个更易读的版
  • 两个日期之间间隔 15 分钟 javascript

    问题 我需要将两个日期 时间戳之间的所有 15 分钟时隙 日期格式 2016 08 10 16 00 00 创建为 HH mm 格式的数组 其中分钟限制为 00 15 30 45 示例 中午 12 30 到下午 2 30 将 gt 12 3
  • 替换打字稿中字符串中字符的所有实例?

    我正在尝试用 x 字符替换电子邮件中的所有句号 例如 电子邮件受保护 cdn cgi l email protection 将变为 myxemail emailxcom 电子邮件设置为字符串 我的问题是它不只是替换句号 而是替换每个字符 所
  • backbone.js:视图中影响集合中不同模型的按钮

    我刚刚开始使用backbone js 到目前为止 我真的很喜欢它 我有这样的事情 ModelA ModelB ViewA ViewB ModelA 持有 ModelB 的集合 如何使用按钮构建模型 B 的视图 单击该按钮会更改集合中下一个
  • 如何使用 HTML5 Javascript Canvas 获取三个碰撞形状的交集并删除不碰撞的部分?

    我最近专门针对 KonvaJs 发布了类似的问题here https stackoverflow com questions 64603077 how can i get the intersection of three shapes c
  • 将 javascript 变量作为参数传递给 @url.Action()

    是否可以将javascript变量作为参数传递给 url Action 因为据我所知可能存在服务器和客户端问题 我的要求是我必须根据过滤器下载文件 并进行ajax调用不适用于下载文件 所以我对 url Action 进行了编码 但无法实现这

随机推荐

  • Dubbo的使用及原理

    Dubbo是什么 Dubbo是阿里巴巴SOA服务化治理方案的核心框架 每天为2 000 个服务提供3 000 000 000 次访问量支持 并被广泛应用于阿里巴巴集团的各成员站点 Dubbo 是一个 分布式服务框架 致力于提供 高性能和透明
  • 基于NAudio实现录制声卡声音

    之前的文章 测试 net开源音频库NAudio 中介绍了基于NAudio模块中的WaveInEvent和WaveFileWriter类实现基本的录音功能 但存在一个问题 本来想录制视频中的声音 但录音过程中会把麦克风中的杂音 挪动物品的声音
  • Vue.js入门——指令大全

    什么是指令 Vue的指令是带有特殊前缀v 的HTML特性 他可以绑定一个表达式 并且把一些特性作用到DOM结构上去 下面我们来看一下常见的指令 1 v text v text指令用于将数据填充到标签中 作用于插值表达式类似 如果数据中有HT
  • 从关系型数据库到非关系型数据库

    原文地址 http blog csdn net robinjwong article details 18502195 1 关系型数据库 关系型数据库 是指采用了关系模型来组织数据的数据库 关系模型是在1970年由IBM的研究员E F Co
  • Opencv之cv2.minAreaRect

    目录 一 cv2 minAreaRect函数原型 二 minAreaRect函数返回rect对象 一 cv2 minAreaRect函数原型 cv2 minAreaRect Points 其中points是点集 数据类型为ndarray a
  • 怀旧服服务器荣誉系统是啥,怀旧服荣誉系统上线第一天:互刷出现 第一批R10指日可待?...

    千呼万唤 国服怀旧服P2阶段终于开放了 荣誉系统 世界BOSS全都在11月15日凌晨更新完成后加入到了游戏当中 怀旧服玩家也是早早地准备了起来 从凌晨更新完成的那一刻开始 国服各大服务器就进入到了激烈的世界PVP当中 之前还一片祥和的野外瞬
  • 定时器中断实验

    目录 一 什么是TIM 1 TIM定义 2 定时器分类 二 定时器中断的配置 1 定时器中断的配置流程 2 根据例程来看 三 TIM库函数介绍 四 跨文件使用变量的方法 五 关于定时器中断实验的一个问题 一 什么是TIM 1 TIM定义 T
  • oracle 管理之《sql命令》

    数据库其实就是柜子 柜中的抽屉是表空间 抽屉中的文件夹是数据文件 文件夹中的纸是表 写在纸上的信息就是数据 一 表空间管理 1 创建表空间 create tablespace ams datafile e app oracle oradat
  • 数据结构之美:如何优化内存和性能

    文章目录 什么是数据结构 内存优化 使用紧凑的数据类型 避免冗余存储 使用位运算 压缩数据 性能优化 使用适当的数据结构 减少不必要的复制 使用合适的算法 数据结构优化的案例分析 结论 欢迎来到数据结构学习专栏 探索数据结构之美 如何优化内
  • 立创梁山派GD32F450ZGT6--使用DMA实现多通道ADC采集

    这次调试有些久 缺乏的知识很多 最重要的是ADC的引脚配置为浮空之后 如果没有接入东西 其读取的ADC值是不确定的 所以在测试的时候 一定要把对应的电压接入ADC引脚 测量的值才是准确的 上代码 adc c include adc h 采样
  • 解决 PowerDesigner 错误 The generation has been cancelled…

    在生成为物理数据模型时出现错误 Thegeneration has been cancelled because errors have been found by the checkmodel 其实也是设置问题 点击PowerDesign
  • python怎么连续计算各个坐标之间距离_使用dlib,OpenCV和Python进行人脸识别—人眼瞌睡识别...

    使用dlib OpenCV和Python进行人脸识别 人眼瞌睡识别 前期文章我们分享了如何使用python与dlib来进行人脸识别 以及来进行人脸部分的识别 如下图 dlib人脸数据把人脸分成了68个数据点 从图片可以看出 人脸识别主要是识
  • c语言字母分别代表的意思,C语言中%c,%s分别代表什么意思? 在C语言中c% 和 d% 是表示什么意思?...

    c在C语言中代表字符型格式符 s在C语言中代表字符串型格式符 c和 s一般用在printf sprintf等字符串格式化函数中 用于决定格式化参数的数据类型 如printf s a 会将变量a作为字符串类型进行格式化 printf 函数是格
  • HTML5 Canvas爱心表白动画特效

    代码自用自取 复制粘贴直接使用 喜欢的话可以查看博主其它文章 贡献一丢丢的浏览量 感激不尽 先看一下效果 div div
  • Gateway网关简介以及使用

    目录 一 概述简介 1 1 Gateway是什么 1 2 Gateway能干嘛 1 3 Zuul和gateway 1 4 gateway三大核心概念 1 5 gateway工作流程 二 实战练习 2 1 入门demo 2 2 网关路由两种配
  • js 金额格式化,千分位以逗号隔开

    desc 向金额添加逗号分隔符 func addComma static param Number money 传入的金额 param Number wei 保留几位小数 默认两位 returns string 转换后的金额字符串 exam
  • qt退出定位

    https blog csdn net u011430225 article details 52812854
  • 三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》

    注 本系列教程需要对应 JavaScript html css 基础 否则将会导致阅读时困难 本教程将会从 ECharts 的官方示例出发 详解每一个示例实现 从中学习 ECharts ECharts 官方示例 https echarts
  • RTT-信号量

    RTT 信号量 概念 信号量就是一个标记位 释放信号量就是标记位加一 获取信号量后自动减一 减到0后不能再获取了 信号量 Semaphore 是一种实现线程间通信的机制 实现线程之间同步或临界资源的互斥访问 常用于协助一组相互竞争的线程来访
  • Vue使用echarts地图进阶2(实现多级下钻功能)

    echarts地图实现多级下钻功能 点击下钻效果图 先来小看一下 多级下钻和单次下钻跳转json文件的区别 1 如果要实现多级下钻并且展示子区域的话 下钻点击事件请求的JSON必须是该点击区域的全面父级JSON 即没有自己 只有孩子们组成