echart实现地图展示

news2024/12/25 12:53:43

最近做的页面中需要展示省级地图精确到市级且悬浮到地区上时会显示一些信息

然后参考了网址:

“绿色金融” - 江西省 - category-work,geo地理坐标,legend,series-map地图,series-scatter散点图,title标题,tooltip提示框,visualMap视觉映射 - makeapie echarts社区图表可视化案例

首先我们要获取对应的区域的地图,可以在阿里云数据可视化平台获取地图文件:

DataV.GeoAtlas地理小工具系列

我是选择了其它类型下的FeatureCollection类型然后直接下载到本地,在项目里面引入的

到vue里面实现代码的方式会和样例中有一些不同。

效果图类似:

<template>

  <div :style="{height: scrollerHeight,width: scrollerWidth}" ref="charts"></div>

</template>

<script>

import * as echarts from "echarts";

import geoJson from './hunan.json'   //地图包

export default {

  data() {

    return {

      scrollerHeight: '100%',

      scrollerWidth: '100%'

    }

  },

  created() {

    this.$nextTick(() => {

      setTimeout(() => {

        this.initCharts();

      }, 600)

       

    })

  },

  methods: {

    initCharts() {

      const myChart = echarts.init(this.$refs["charts"]);

      myChart.showLoading();

      echarts.registerMap('hunan', geoJson);

      myChart.hideLoading();

      var geoCoordMap = {

         ......

          '娄底市':[111.014813,27.747083],

          '湘西土家族苗族自治州':[109.186525,28.759389],

      }

      var data = [

.......

          {name: '娄底市', value: 2},

          {name: '湘西土家族苗族自治州', value: 2},

      ];

      var convertData = function (data) {

        var res = [];

        for (var i = 0; i < data.length; i++) {

            var geoCoord = geoCoordMap[data[i].name];

            if (geoCoord) {

                res.push({

                    name: data[i].name.length>=5 ? `${data[i].name.slice(0,5)}\n${data[i].name.slice(data[i].name.length - 5)}`: data[i].name,

                    value: geoCoord.concat(data[i].value)

                });

            }

        }

        return res;

      };

      const option = {

        tooltip: {

            trigger: 'item',

            formatter: function (params) {

              if(typeof(params.value)[2] == "undefined"){

                return params.name + ' : ' + params.value;

              }else{

                return params.name + ' : ' + params.value[2];

              }

            }

        },

        legend: {

            orient: 'vertical',

            y: 'bottom',

            x: 'right',

            data: ['credit_pm2.5'],

            textStyle: {

                color: '#fff'

            }

        },

        visualMap: {

            show: false,

            min: 0,

            max: 500,

            left: 'left',

            // top: 'bottom',

            top: 50,

            bottom: 50,

            text: ['高', '低'], // 文本,默认为数值文本

            calculable: true,

            seriesIndex: [1],

            inRange: {

                color: ['#74c856'] // 黑紫黑

            }

        },

        geo: {

            show: true,

            map: 'hunan',

            zoom: 1.24,

            label: {

                normal: {

                    show: false

                },

                emphasis: {

                    show: false,

                }

            },

            roam: true,

            itemStyle: {

                normal: {

                    areaColor: '#74c856',

                    borderColor: '#f8b62b',

                },

                emphasis: {

                    areaColor: '#f8b62b',

                }

            }

        },

        series : [{

          name: 'credit_pm2.5',

          type: 'scatter',

          coordinateSystem: 'geo',

          data: convertData(data),

          // symbolSize: 5,

          symbolSize: 1,

          label: {

              normal: {

                  formatter: '{b}',

                  position: 'right',

                  show: true

              },

              emphasis: {

                  show: true

              }

          },

          itemStyle: {

              normal: {

                  color: '#fff'

              }

          }

        },

        {

          type: 'map',

          map: 'hunan',

          geoIndex: 0,

          // aspectScale: 0.75, //长宽比

          aspectScale: 1.1, //长宽比

          showLegendSymbol: false, // 存在legend时显示

          label: {

              normal: {

                  show: false

              },

              emphasis: {

                  show: false,

                  textStyle: {

                      color: '#fff'

                  }

              }

          },

          roam: true,

          itemStyle: {

              normal: {

                  areaColor: '#031525',

                  borderColor: '#3B5077',

              },

              emphasis: {

                  areaColor: '#2B91B7'

              }

          },

          animation: false,

          data: data

      },

      // {

      //     name: '点',

      //     type: 'scatter',

      //     coordinateSystem: 'geo',

      //     symbol: 'pin',

      //     symbolSize: [50,50],

      //     label: {

      //         normal: {

      //             show: true,

      //             textStyle: {

      //                 color: '#fff',

      //                 fontSize: 9,

      //             },

      //             formatter (value){

      //                 return value.data.value[2]

      //             }

      //         }

      //     },

      //     itemStyle: {

      //         normal: {

      //             color: '#6cb3e4', //标志颜色

      //         }

      //     },

      //     zlevel: 6,

      //     data: convertData(data),

      //   }

      ]

    };

    myChart.setOption(option);

  },

  }

}

</script>

直接贴出了用到的代码,希望可以提供帮助。

但是实现的时候发现了一个问题平台下载下来的地图文件是有一百多kb的有点大。我们可以尝试使用某些方式来压缩来避免一些可能的问题。

 

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

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

相关文章

同心旋转圆弧

效果如图: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

Unity新动画系统之动画状态机Animator Controller

1、创建动画状态机文件 &#xff08;1&#xff09;会在创建动画时自动创建 &#xff08;2&#xff09;Create----Animator Controller 2、动画状态机窗口相关 层级&#xff1a;可以在右侧齿轮设置参数大小 3、添加动画 为对象添加动画后会自动添加到状态机中 4、状态切换 …

halcon安装多个版本时,环境变量设置

记录halcon安装多个版本时&#xff0c;环境变量设置的步骤&#xff0c;方便以后查阅。 1.设置4个环境变量 找到电脑系统中的系统变量&#xff08;不同系统位置不一样&#xff09;&#xff0c;如下图&#xff1a; &#xff08;1&#xff09;变量名&#xff1a;HALCONARCH 变量…

49天精通Java,第36天,Java数组、java数组初始化、java数组赋值

目录 一、声明数组二、初始化数组三、访问数组元素四、遍历数组五、数组复制1、基本类型数组复制2、Object数组复制3、多维数组复制4、对象数组复制 大家好&#xff0c;我是哪吒。 &#x1f3c6;本文收录于&#xff0c;49天精通Java从入门到就业。 全网最细Java零基础手把手入…

企业开发前端框架2023最新前沿技术vue3+vite+vuetify+js+Tailwind Css

文章目录 前言创建项目1、打开vuetify的官网下载项目2、下载依赖3、添加tailwindcss依赖 结束 前言 最近需要开发新的项目&#xff0c;正好学习了Tailwindcss&#xff0c;所以就想着集成到新项目里来&#xff0c;一来可以精进项目经验&#xff0c;也可以感受一下tailwindcss的…

6.1黄金探底回升是否到顶,今日多空如何布局

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周三(5月31日)黄金期货价格攀升&#xff0c;美国国债收益率下降推动金价升至一周最高收盘位。美市尾盘&#xff0c;现货黄金收报1962.42美元/盎司&#xff0c;上升3…

实验篇(7.2) 05. SSL - 通过浏览器访问远端内网服务器 ❀ 远程访问

【简介】直接将内网服务器映射成公网IP&#xff0c;可以方便的从任何地方访问服务器的指定端口&#xff0c;但是这种方式下&#xff0c;服务器是公开且暴露的。那有没有即方便、又比较安全的远程访问服务器的方法呢&#xff1f;我们来看看SSL VPN的Web模式。 SSL VPN介绍 从概念…

小心618的iPhone优惠套路 实测对比京东更靠谱

今年的618&#xff0c;各大电商平台都纷纷摩拳擦掌&#xff0c;宣称要拿出史上最大力度来承办这次大促活动&#xff0c;希望以最大的诚意来挖掘消费者的需求潜力&#xff0c;作为资深果粉的我&#xff0c;必然也是希望能在此次618大促中买到心仪已久的Apple产品。 对比之后才发…

opencv的Mat相关操作

cv Mat类型的使用 下载安装好opencv&#xff0c;使用时只需添加如下头文件&#xff1a; #include<opencv2/opencv.hpp>另外在工程的属性页中要添加opencv的包含目录与库目录&#xff1a; 在写稍大一些工程的时候&#xff0c;尽量不要直接用using namespace cv; 因为在…

运营策略:影响内容病毒式传播的 8 个维度

目录 01 第一个影响要素就是内容的类型 02 第二个要素时内容的长度 03 第三个要素是要唤起正确的情感 04 第四个是利用趋势&#xff0c;也就是热点问题或事件 05 第五个是视觉效果 06 第六个是增加作者署 07 第七个是在正确的时间发布内容 08 第八个是影响者的力量 病毒…

“实时数据同步:构建高效的 MySQL 数据同步方案“

方案一 基于LVM快照进行备份切换 介绍: MySQL数据库本身并不支持快照功能(sqlServer支持) 因此快照备份是指通过文件系统支持的快照功能对数据库进行备份 备份的前提是将所有数据库文件放在同一文件分区中&#xff0c;然后对该分区进行快照操作 LVM是LINUX系统下对磁盘分区进…

Linux:磁盘资源耗尽故障

有两种经典原因 磁盘空间已被大量的数据占满&#xff0c;空间耗尽。 解决办法&#xff1a;将没有用的大型文件转移或删除 文件i节点耗尽故障 &#xff08;文件过多&#xff09; 解决办法&#xff1a;删除 磁盘被大型文件占满 模拟 准备了一个2G大小的分区 然后进行挂载 我…

电子企业如何高效地使用MES生产管理系统

引言&#xff1a; 在当今数字化、智能化的时代&#xff0c;电子企业的发展已经达到了一个新的高度。与此同时&#xff0c;MES生产管理系统在电子企业中扮演着越来越重要的角色。本文将探讨电子企业如何高效地使用MES生产管理系统&#xff0c;提高企业生产效率和管理水平&#…

基于点云和图像的目标识别与定位,以及目标去重

【背景介绍】 无人系统常常面临对特定目标进行跟踪侦察的任务需求&#xff0c;这就要求无人系统要具备对目标进行识别以及对目标进行定位的能力&#xff0c;同时&#xff0c;任务一般发生在一段连续时间跨度&#xff0c;而相同目标存在被单个机器人重复发现&#xff0c;或者被…

Vue电商项目--详情页面完成

放大镜操作上 <script> var mySwiper new Swiper (.swiper, {direction: vertical, // 垂直切换选项loop: true, // 循环模式选项// 如果需要分页器pagination: {el: .swiper-pagination,},// 如果需要前进后退按钮navigation: {nextEl: .swiper-button-next,pr…

14.2:派对的最大快乐值

派对的最大快乐值 员工信息的定义如下: class Employee { public int happy; // 这名员工可以带来的快乐值 List subordinates; // 这名员工有哪些直接下级 } 公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、 没有环的多叉树 树的头节点是公…

框架解耦神器 -- REventBus

REventBus背景 在实际的项目开发中&#xff0c;经常会遇到业务与业务&#xff0c;组件与组件&#xff0c;业务与组件之间的通信&#xff0c;举个例子&#xff1a;当有烟雾传感器检测到烟雾超标时&#xff0c;需要打开排气扇排气&#xff0c;同时显示烟雾浓度显示到显示器中&am…

centos7升级rockylinux 未写完

前言 查看centos的版本 &#xff0c;我这台服务器是虚拟机 [rootlocalhost ~]#cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]#uname -a Linux jenkins_server 3.10.0-1160.83.1.el7.x86_64 #1 SMP Wed Jan 25 16:41:43 UTC 2023 x86_64 …

PIC 使能485/422笔记(修订中...)

1.需求 工作中需要把目前设备的单向232转为485/422模式&#xff0c;实现双向通讯&#xff0c;目前查找相关资料。突然想到一件事&#xff0c;我是否能让232现有的单向上发线同时连工控机的tx,rx&#xff0c;然后靠协议&#xff0c;来定时切换PIC一侧的tx rx?PIC可能不支持这个…

Python之pyecharts的常见用法2-柱状图-折线图

Pyecharts是一个基于Echarts的Python可视化库&#xff0c;可以用Python语言轻松地生成各种交互式图表和地图。它支持多种图表类型&#xff0c;包括折线图、柱状图、散点图、饼图、地图等&#xff0c;并且可以通过简单的API调用实现数据可视化。 Pyecharts的优点包括&#xff1a…