echarts地图的tooltip自定义样式显示图表

echarts地图的tooltip自定义样式显示图表

最近遇到一个需求:需要在地图中实现鼠标点击或者停留在地图中某一片区域时,该区域显示亮高和显示tooltip提示框信息,但是难点在于需要在tooltip提示框中再绘制一层图表。按以往我们做过都是这种,tooltip提示框中只是单纯显示文本信息。
在这里插入图片描述
但是,需求要的不是这种,先不多说,直接给你们看最终展示的效果:
鼠标点击或停留在某一片区域时,在tooltip提示框中显示该区域的另外一层数据图表,鼠标单击可选中或取消区域的亮高显示,以及两层地图凸显一个立体层次感。看完记得点个赞(技术分享,加快成长)。
在这里插入图片描述

这里我们以广州市作为Demo,可以看出这是我们想要的在tooltip提示框中绘制另外一层图表的效果。

ok,接下来我们不唠嗑,直接上代码(大家最喜欢的哈哈)。

项目结构:
项目是使用Vue + typescript + antd vue,大家根据自己的项目来配置。
在这里插入图片描述

一、创建gzMap.vue文件:

<template>
  <div class="main">
  	<!-- 绘制广州地图 -->
    <div ref="gzMap" class="gzMap"></div>
    <!-- 点击不同模块,切换显示不同tooltip中的图表类型,这里Demo只展示一种类型 -->
    <div class="Mybutton">
      <a-radio-group :value="typeName" @change="handleTypeChange">
        <a-radio-button value="type1">
          模块一
        </a-radio-button>
        <a-radio-button value="type2">
          模块二
        </a-radio-button>
      </a-radio-group>
    </div>
  </div>
</template>

<script lang="ts">
import {
     Component, Prop, Vue, Watch } from 'vue-property-decorator';
import gzMapData from "@/common/gzMap-common/index";

@Component
export default class HelloWorld extends Vue {
    

  //模块名称
  private typeName: string = "type1";

  // 广州地图各类型指数数据
  private guangzhouDatas: any;

  // 引入广州地图地理位置数据
  private guangzhouMap: any = require("@/common/gzMap-common/guangzhou.json");

  // 引入地图需要的tooltip配置项
  private mapAreaDatas: any;

  private $echarts: any;

  //监听传入指数模块名称改变
  @Watch("typeName", {
     immediate: true })
  private watchNum(val: string, oldVal: string) {
    
    // 根据指数类型引入对应echart配置项文件
    this.OptionType();
    // 根据指数类型引入对应echart地图数据文件
    this.dataType();
  }

  private mounted() {
    
    const ele = this.$refs.gzMap;
    const guangzhouChart: any = this.$echarts.init(ele);
    //页面切换,销毁监听事件
    this.$on("hook:beforeDestroy", () => {
    
      window.removeEventListener("resize", () => {
    
        guangzhouChart.resize();
      });
    });
  }

  // 根据不同模块指数,按需动态引入不同echart配置项文件,用于地图tooltip渲染
  private OptionType() {
    
    if (this.typeName == "type1") {
    
      //指数1数据
      import("@/common/gzMap-common/gzMapData1").then(module => {
    
        this.mapAreaDatas = module.default.option_gzMapType;
      });
    }
  }

  // 根据不同模块指数,按需要动态引入不同地图数据文件
  private dataType() {
    
    import("@/common/gzMap-common/index").then(module => {
    
      //指数模块名称
      let tag: string = "";
      tag = this.typeName;
      switch (tag) {
    
        case "type1": {
    
          this.guangzhouDatas = module
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
张家口市是河北省的一个地级市,阳原县是张家口市下属的一个县。ECharts是一个JavaScript的图表库,可以用于创建各种交互式的数据可视化图表。而3D地图是ECharts中的一个功能,可以用来展示地理位置相关的数据。 自定义图标是指在地图上添加自己设计的图标标记。在ECharts中,可以通过配置地图的series项来实现自定义图标的功能。具体操作如下: 1. 在ECharts中使用张家口市阳原县的地理坐标数据作为地图的配置项,来展示该地区的地理位置。 2. 在地图的series项中设置自定义图标的样式、位置等属性。可以通过设置symbol为自定义的形状或图标,设置symbolSize来调整大小。 3. 在自定义图标中添加需要展示的数据信息,例如添加一个气泡图标来展示人口数量,可以通过设置symbolSize的大小来呈现人口数量的多少。 4. 通过设置tooltip显示图标的详细信息,在鼠标悬停在图标上时显示。 通过以上的步骤,就可以实现在张家口市阳原县的3D地图上展示自定义图标的功能。可以根据需要自定义各种形状、图标和样式,将数据以可视化的方式呈现出来,帮助用户更好地理解和分析数据。同时,还可以通过交互操作,例如点击、拖拽等来进一步探索地理位置和数据之间的关系。这样的自定义图标实例可以应用于各种领域,例如地理信息系统、市场分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值