vue下echarts的地图配置(3d悬浮效果)

这篇具有很好参考价值的文章主要介绍了vue下echarts的地图配置(3d悬浮效果)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.实现效果

vue下echarts的地图配置(3d悬浮效果)

图片上面的水印是公司软件自带的

二.html块代码

<div class="source-map-panel" id="chinaMap" ref="mapRef"></div>

 三.主代码

this.myChart = this.$echarts.init(document.getElementById("chinaMap")); // 这里是为了获得容器所在位置
      let options = {};
      options.tooltip = getTooltip(this);        //设置鼠标移动上去参数配置
      options.geo = getGeo(this);            //设置地图底层(实现3d效果)
      options.series = getSeries(this);    //设置地图数据

      this.myChart.setOption(options);

 四.配置数据

toolTip配置js文件如下 

import {toWan} from '@/utils/public.js'
export const getTooltip = (that) => {
    return {
        enterable: true, // 鼠标是否可进入提示框浮层中\
        hideDelay: 200, // 浮层隐藏的延迟
        confine: true,
        position: function (point, params, dom, rect, size) {
            // 提示框位置
            let x = 0; // x坐标位置
            let y = 0; // y坐标位置

            // 当前鼠标位置
            let pointX = point[0];
            let pointY = point[1];

            // 提示框大小
            let boxWidth = size.contentSize[0];
            let boxHeight = size.contentSize[1];

            if (boxWidth > pointX) {
                x = 5; // 自己定个x坐标值,以防出屏
                y -= 15; // 防止点被覆盖住,可根据情况自行调节
            } else {
                // 左边放的下
                x = pointX - boxWidth - 15;
            }

            if (boxHeight + 20 > pointY) {
                y = pointY + 15;
            } else if (boxHeight > pointY) {
                y = 5;
            } else {
                // 上边放得下
                y += pointY - boxHeight;
            }
            return [point[0] - boxWidth - 20, point[1] - 30];
        },

        backgroundColor: "rgba(255, 255, 255, 0.7)",
        padding: [15, 15, 15, 15],

        formatter: (params) => {
            let sumaryAmount, sumaryCnt, userCnt;
            var htmlStr = "";
            if (that.mapList) {
                let list = that.mapList;
                let dataList = list.filter(item => {
                    return item.name === params.name //判断返回数据的name和实际散点的name相同
                })
                if (dataList.length > 0) {
                    sumaryAmount = dataList[0].amount;
                    sumaryCnt = dataList[0].count;
                    userCnt = dataList[0].traderCount;
                    htmlStr = `<div class="tooltip-style" style="position:relative;">
                          <span style="margin-bottom: 10px;color: #0081CC;font-size:20px;font-weight:600;padding-top: 0">${params.name}</span><br />
                          <div style="line-height:30px;margin-top:10px">
                          <span style="color: #333;font-size:14px">融资金额(万元):  ${sumaryAmount?sumaryAmount:''}</span><br />
                          <span style="color: #333;font-size:14px">融资笔数(笔):  ${sumaryCnt?sumaryCnt:''}</span><br />
                          <span style="color: #333;font-size:14px">融资笔数(人):  ${userCnt?userCnt:''}</span><br />
                          </div>
                        </div>`;
                }
                return htmlStr;
            }
        },

        extraCssText: "box-shadow: 4px 6px 25px 0px rgba(163, 177, 190, 0.4), inset 0px 0px 2px 0px #FFFFFF; backdropFilter: blur(4px);border-radius:12px;width:auto;",
        textStyle: {
            fontSize: 16,
            color: "#fff",
        },
    }
}

geo配置数据如下: 

export const getGeo = (that) => {
    //这里设置为地图的阴影
    return [{ // 这个是重点 —— 这里设置为地图的阴影
        map: 'china',
        roam: false, // 禁止拖拽
        silent: true, // 禁止hover效果
        zoom: that.zoomSize, // 地图比例
        center: [105.194115019531, 36.582111640625], // 地图中心位置, 此处的纬度与下面的center相差1度是形成阴影的距离,可自己随意调整
        itemStyle: {
            normal: {
                borderColor: 'transparent',
                areaColor: "rgb(1,42,170)",
            },
        },
        regions: [{
            name: "南海诸岛",
            itemStyle: {
                // 隐藏地图
                normal: {
                    opacity: 0, // 为 0 时不绘制该图形
                }
            },
            label: {
                show: false // 隐藏文字
            }
        }],
    }]
}

 series配置如下:

export const getSeries = (that) => {
    // 此处为真正的地图
    let series = [{
        name: "", // 浮动框的标题
        type: "map",
        map: "china",
        zoom: that.zoomSize,
        layoutSize: "100%",
        emphasis: {
            // 鼠标hover是否显示内容,
            label: {
                //用于显示地图文本内容
                show: true,
                textStyle: {
                    color: "#fff",
                },
            },
        },
        label: {
            //这儿自定义图形样式
            // 地图标注
            normal: {
                show: false, // 是否显示对应地名
                textStyle: {
                    // color: "#fff",
                },
            },
        },
        center: [105.194115019531, 35.582111640625], // 设置地图中心
        itemStyle: {
            // 地图的样式
            normal: {
                borderColor: "#FFFFFF", // 省份边框颜色
                areaColor: {
                    type: "linear",
                    x: 0,
                    y: 1,
                    x2: 0,
                    y2: 0,
                    colorStops: [{
                            offset: 0,
                            color: "rgb(93,170,242)", // 100% 处的颜色
                        },
                        {
                            offset: 1,
                            color: "rgb(2,128,241)", // 0% 处的颜色

                        },
                    ],
                    global: false, // 缺省为 false
                },
                borderWidth: 1, // 省份边框宽度
                // shadowColor: "rgba(100,255,238,0.5)", // 省份边框阴影
                shadowColor: "rgba(255,255,255,0.5)", // 省份边框阴影
                shadowBlur: 5, // 省份边框聚焦
            },
            emphasis: {
                // 鼠标hover显示
                show: false,
                //areaColor: "#0D30D4",
                areaColor: {
                    type: "linear",
                    x: 1,
                    y: 0,
                    x2: 0,
                    y2: 0,
                    colorStops: [{
                            offset: 0,
                            color: "rgb(243,135,36)", // 0% 处的颜色
                        },
                        {
                            offset: 1,
                            color: "rgb(218,172,113)", // 100% 处的颜色
                        },
                    ],
                    global: false, // 缺省为 false
                },
                color: "#fff",
                // textStyle: {
                //   color: "#fff",
                // },
            },
        },

        data: that.mapList,
    }]

    if (that.mapList && that.mapList.length > 0) {
        that.mapList.forEach(item => {
            item.itemStyle = {
                // 单个区域的样式设置
                color: "rgb(251, 189, 108)",
                opacity: 1,
            }
        })
    }

    return series;
}

五.其他配置数据说明

1. zoomSize设置值为1.4

2.series数据格式为:[{name:'四川省',amount:'123456'},{name:'海南省,amount:'456'}]

3.加上地图适配文章来源地址https://www.toymoban.com/news/detail-507328.html

mounted() {
    window.addEventListener("resize", this.handleResize);
  },

handleResize() {
      // 地图自适应缩放
      this.myChart.resize();
      let domWidth =
        document.body.clientWidth || document.documentElement.clientWidth;
      if (domWidth > 1440) {
        return {
          "this.zoomSzie": 1.6,
        };
      } else {
        return {
          "this.zoomSzie": 1.2,
        };
      }
    },

到了这里,关于vue下echarts的地图配置(3d悬浮效果)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • echarts地图3D效果

     

    2024年02月11日
    浏览(31)
  • vue使用echarts与echarts-gl实现3d地图与 3d柱状图

    目录 前言 一、下载echarts与echarts gl 二、vue引入与页面使用 1.引入 2.页面引入echarts-gl 三、下载地图数据 四、使用地图 1、html初始化地图放入位置: 2、data创建变量 3、创建地图 4、钩子函数渲染地图 5、渲染完成效果 总结 提示:本项目使用vue,请提前搭建好vue项目 本次需求

    2024年02月12日
    浏览(29)
  • vue echarts实现3D效果柱状图

    在vue2项目里面,研究了哈,这里记录下eacharts 实现3D效果柱状图 在main.js引入eacharts 展示效果:大屏demo

    2024年02月15日
    浏览(34)
  • 简单聊聊Echarts伪3D地图实现的相关配置

    知识和技能真的是用进废退,还是得多实践,才不至于遗忘。 目录 前言 二、实现原理 三、从0开始实现 1.目录结构 2.地图JSON数据获取 3.具体实现,重头戏 3.一些常见问题的解决方法 总结 本文简单来聊一聊Echarts伪3D地图的实现,只分离出最底层的伪3D效果,删除了其余的上层

    2024年02月06日
    浏览(86)
  • vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

    一、实现效果 使用echarts实现省市地图绘制,你也可以绘制全国地图。 根据数据在地图显示柱状图,根据经纬度实现定位。 根据数据显示数据,涟漪动态效果。 当然你也可以根据你自己的需求,增删效果哦。 二、实现方法 1、安装echarts插件 2、获取省市json数据 https://datav.

    2024年02月03日
    浏览(34)
  • vue-使用echarts+echarts-gl实现某个省份地区地图3d可视化

    前言 最近在开发中遇到一个需求,需要把一个地区地图变成3d感觉悬浮在大屏中间配合业务需求 其实echarts配合三方库就可以实现这个效果,具体细节需要自己调整 代码实现 1.下载各省份各地区地图数据-json文件-根据需求下载对应地图json数据引入即可 最新全国地图JSON数据

    2024年01月20日
    浏览(46)
  • echarts看板效果图:流光折线图、3d柱状图、3d饼图、3d地图

    现在展厅的大看板是越花里胡哨越好,不过真的挺难做的。好在可以百度找到一些大神的作品进行参考。 下面的内容都是基于 echarts 5.3.3 和 vue3 。另外demo都是参考别人的案例。 效果图 代码 本质上是两条线组合在一起的,一条是静态的线条,一条是动态的线条。相关属性都

    2024年02月06日
    浏览(33)
  • vue+echart实现3d地图可拖拽、缩放、区域填充颜色(geo3D)

    功能背景 一个略微比2d地图炫酷一些的3d地图, 1、可对区域进行不同颜色填充。 2、可拖拽缩放地图 3、鼠标悬停高亮某区域。 (注意:当开启了鼠标悬停series,并高亮某个数据的时候,会导致地图的拖拽缩放出现卡顿,因为相当于是事件重叠了。。。目前还没想到好的解决方

    2024年02月13日
    浏览(36)
  • vue echarts 3D地球和世界地图的实现,并且显示不同国家的数据

    别忘记给#earth元素设置宽高 效果如下图 别忘记给#world元素设置宽高 其中注意点是world.js 下载地址 下载完成以后需要对其进行改变一下,原本是他是放在一个匿名自执行函数里面,直接在vue里面引用会报错,要把他变成 export 对象,代码片段实例 效果如下图 关键点在globe里面

    2024年02月04日
    浏览(37)
  • vue3 echarts实现3D立体柱状图效果,多柱状图

    使用插件vchart+echarts5.x按需引入实现 需要注意下,底下的椭圆,是在柱子底下“透”出来,颜色应该暗一点,才能视觉上看着有立体感。 成品,还原了大部分设计效果

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包