Vue(十八):echarts地图省市区联动

news2024/11/15 16:00:36

效果

在这里插入图片描述

数据来源

https://datav.aliyun.com/portal/school/atlas/area_selector

接口请求地址

https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=100000_full

源码

样式

.map {
  width: 1000px;
  height: 700px;
}

布局

<template>
  <div class="map">
    <button @click="backMap">返回</button>
    <v-chart :option="option" theme="dark" autoresize @click="nextMap" />
  </div>
</template>

脚本

import axios from 'axios';
import VChart from 'vue-echarts';
import { registerMap, use } from 'echarts/core';
import { MapChart } from 'echarts/charts';
import { CanvasRenderer } from 'echarts/renderers';

export default {
  name: 'Map',
  components: {
    VChart,
  },
  data() {
    use([CanvasRenderer, MapChart]);
    return {
      geoJson: null,
      geoPath: [],
      option: null,
    };
  },
  methods: {
    /**
     * 地图配置
     * @param mapName
     * @returns option
     */
    setMapOption(mapName) {
      return {
        backgroundColor: 'transparent',
        series: [
          {
            type: 'map',
            map: mapName,
            zoom: 1,
            roam: true, // true 'scale' 或者 'move'
            zlevel: 10,
            show: true,
            layoutCenter: ['50%', '50%'],
            layoutSize: '100%',
            label: {
              show: true,
              color: '#409EFF',
            },
            itemStyle: {
              areaColor: 'rgba(0, 0, 0, .6)',
              borderColor: '#409EFF',
            },
            select: {
              label: {
                show: true,
                color: '#ffffff',
              },
              itemStyle: {
                areaColor: 'rgba(64, 158, 255, .6)',
                borderColor: '#0048ff',
                shadowColor: '#409EFF',
                shadowBlur: 10,
              },
            },
            emphasis: {
              label: {
                show: true,
                color: '#ffffff',
              },
              itemStyle: {
                areaColor: 'rgba(64, 158, 255, .6)',
                borderColor: '#0048ff',
                shadowColor: '#409EFF',
                shadowBlur: 10,
              },
            },
          },
        ],
      };
    },
    /**
     * 生成地图
     * @param code 地图code
     * @returns {Promise<void>}
     */
    async mapGenerator(code = '100000') {
      if (code === this.geoPath[this.geoPath.length - 1]) return;

      const { data } = await axios.get(`/areas_v3/bound/geojson?code=${code}`);
      this.geoJson = data;
      this.geoPath.push(code);
      const mapName =
        ['100000', '100000_full'].indexOf(code) !== -1 ? 'china' : code;
      registerMap(mapName, data);
      this.option = this.setMapOption(mapName);
    },
    /**
     * 前往下一层地图
     * @param data
     */
    nextMap(data) {
      const { adcode, childrenNum } = this.geoJson.features.find(
        (d) => d.properties.name === data.name
      ).properties;
      this.mapGenerator(`${adcode}${childrenNum === 0 ? '' : '_full'}`);
    },
    /**
     * 返回上一层地图
     */
    backMap() {
      if (this.geoPath.length === 1) return;
      this.geoPath.pop();
      this.mapGenerator(this.geoPath.pop());
    },
  },
  created() {
    this.mapGenerator();
  },
};

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

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

相关文章

linux -网络编程-多线程并发服务器

目录 1.三次握手和四次挥手 2 滑动窗口 3 函数封装思想 4 高并发服务器 学习目标&#xff1a; 掌握三次握手建立连接过程掌握四次握手关闭连接的过程掌握滑动窗口的概念掌握错误处理函数封装实现多进程并发服务器实现多线程并发服务器 1.三次握手和四次挥手 思考: 为什么…

linux centos7 安装java17

删除旧版本的java或者说是自带的&#xff0c;免得干扰 查找java rpm -qa|grep java java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch java-1.8.0-open…

力扣热门100题之矩阵置0【中等】

题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff…

❤️创意网页:萌翻少女心的果冻泡泡 - 创造生动有趣的视觉效果

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

计算机网络(Computer Networks)基础

本篇介绍计算机网络的基础知识。 文章目录 1. 计算机网络历史2. 以太网" (Ethernet)2.1 以太网" (Ethernet)的简单形式及概念2.2 指数退避解决冲突问题2.3 利用交换机减少同一载体中设备2.4 互联网&#xff08;The Internet&#xff09;2.5 路由(routing)2.6 数据包…

渗透测试基础知识(1)

渗透基础知识一 一、Web架构1、了解Web2、Web技术架构3、Web客户端技术4、Web服务端组成5、动态网站工作过程6、后端存储 二、HTTP协议1、HTTP协议解析2、HTTP协议3、http1.1与http2.0的区别4、HTTP协议 三、HTTP请求1、发起HTTP请求2、HTTP响应与请求-HTTP请求3、HTTP响应与请…

typedef对类型的重命名

typedef 重命名的类型 重命名后的类型名 typedef重命名函数指针类型时的特别写法 正确的重命名函数指针类型的方式 运用&#xff1a; 用typedef简化下面这个代码 简化后&#xff1a;

【C语言day11】

数据类型的等级从低到高如下&#xff1a;char int long float double运算的时候是从低转到高的&#xff0c;表达式的类型会自动提升或者转换为参与表达式求值的最上级类型 #include <stdio.h> int main() {int x -1;unsigned int y 2;if (x > y){printf("x is …

使用Express部署Vue项目

使用Express部署Vue项目 目录 1. 背景 2. 配置Vue CLI 1.1 安装nodejs 1.2 创建vue-cli 1.3 创建vue项目 1.4 构建vue项目3. 配置Express 2.1 安装express 2.2 创建项目4. 使用express部署vue项目 1&#xff0c;背景 我们想要做一个前后端分离的课程项目&#xff0c;前端…

nacos2.2.3最新版启动所遇到的问题总结

前言 有问题就看官方文档&#xff0c;看不懂或者还是报错再看博客&#xff01;因为有时候忙的焦头烂额&#xff0c;却发现官方写的非常清楚&#xff0c;而且人家还自带一个example示例&#xff0c;自己都没有看&#xff0c;自己瞎折腾&#xff01;本人吃过亏&#xff0c;特此提…

svo2论文

论文题目 SVO: Semidirect Visual Odometry for Monocular and Multicamera Systems 内容 1&#xff09; 具有最小特征漂移的长特征轨迹&#xff1b; 2&#xff09; 图像平面中的大量均匀分布的特征&#xff1b; 3&#xff09;新特征与旧地标的可靠关联&#xff08;即环路闭…

mybatisPlus主键策略解读

目录 主键生成策略介绍 AUTO策略 INPUT策略 ASSIGN_ID策略 NONE策略 ASSIGN_UUID策略 主键生成策略介绍 主键的作用就是唯一标识&#xff0c;我们可以通过这个唯一标识来定位到这条数据。当然对于表数据中的主键&#xff0c;我们可以自己设计生成规则&#xff0c;生成主键…

收藏与掘出 沉淀与成长

收藏从未停止&#xff0c;练习从未开始——掘出那些闪光的宝藏 目录 引言&#xff1a;收藏的深意分享一道你收藏的好题分享一个你收藏的便捷技巧积灰这么久&#xff0c;这个当时被你收藏的东西对现在的你还有用吗&#xff1f;结语&#xff1a;掘出 引言&#xff1a;收藏的深意 …

Python(二)

最怕你一生碌碌无为&#xff0c;还安慰自己平凡可贵。 --可以import 函数 变量 类啊 等等 -- 不一 一写了 大家自己写吧 -- 命名尽量不要使用大写或者中文 --比较运算符 又名 关系运算符 后面更新&#xff0c;请看后续 Python(二)

速度快\颜色准\功能多,移动端HEIF图片解码实现方案

HEIF图片压缩格式是一种使用HEVC编码技术存储图像数据的方式&#xff0c;在同等质量下相比JPEG可节省50%以上空间&#xff0c;无论是节约包体还是节省带宽&#xff0c;使用HEIF格式都能有所收益。 基于百度智能云音视频处理MCP的自研BD265编码器&#xff0c;百度智能云对象存储…

联想北京公司研发管理部高级经理周燕龙受邀为第十二届中国PMO大会演讲嘉宾

联想&#xff08;北京&#xff09;有限公司研发管理部高级经理周燕龙先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;PMO如何助力研发。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; PMO在…

Spring的加载配置文件、容器和获取bean的方式

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring配置文件和容器相关 一、加载properties文件1.1加载…

【1.2】Java微服务:SpringCloud概论

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 微服务 ✨特色专栏&#xff1a; 知识分享 &#x…

高可用(keepalived)部署方案

前言&#xff1a;为了减少三维数据中心可视化管理系统的停工时间&#xff0c;保持其服务的高度可用性。同时部署多套同样的三维可视化系统&#xff0c;让三维数据中心可视化系统同时部署并运行到多个服务器上。同时提供一个虚拟IP&#xff0c;然后外面通过这个虚拟IP来访问三维…

什么叫前后端分离?为什么需要前后端问题?解决了什么问题?

单体架构出现的问题 引出&#xff1a;来看一个单体项目架构的结构 通过上述可以看到单体架构主要存在以下几点问题&#xff1a; 开发人员同时负责前端和后端代码开发&#xff0c;分工不明确开发效率低前后端代码混合在一个工程中&#xff0c;不便于管理对开发人员要求高(既会前…