vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

这篇具有很好参考价值的文章主要介绍了vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

通过 阿里旗下的高德地图提供的api ,可以获取到中国各个省份/区级/县级的json数据,但是区级和县级,并没有包含街道和乡镇的数据。

3、本例中data 数据

本文以吉林省地图为例,来实现吉林省下所有市的柱状图显示效果。
你也可以显示中国地图或其他身份地图。原理是一样的哦。

  • 定义一个容器map,最好是定义一个是ID名字的
<template>
    <div class="map" id="map"></div>
</template>
  • 导入插件及吉林省数据,如果你是其他省份的,或全国的,一样的导入哦。
import * as echarts from "echarts";
import jilin from "./json/jilin.json";
  • 准备数据数据

后面这些数据是通过接口来获取的,本示例写的是静态测试数据,我这里是前端提前查询号的。你也可以自己查询。

经纬度查询定位

export default {
  data() {
      return {
          //城市坐标数据
          geoCoordMap: {
                "长春市": [125.31787, 44.05534],
                "吉林市": [126.68595, 43.85034],
                "通化市": [125.76539, 41.68568],
                "四平市": [124.02419, 43.48220],
                "白山市": [127.15109, 42.00513],
                "辽源市": [125.15042, 42.89406],
                "白城市": [122.83774, 45.07098],
                "延边朝鲜族自治州": [129.01009, 42.79950],
                "松原市": [124.55833, 44.94686],
            },
            //吉林省下所有市的测试数据
            testData: [
                {
                    name: '长春市',
                    value: '80',
                },
                {
                    name: '吉林市',
                    value: '70',
                },
                {
                    name: '通化市',
                    value: '60',
                },
                {
                    name: '四平市',
                    value: '50',
                },
                {
                    name: '白山市',
                    value: '90',
                },
                {
                    name: '辽源市',
                    value: '30',
                },
                {
                    name: '白城市',
                    value: '40',
                },
                {
                    name: '延边朝鲜族自治州',
                    value: '30',
                },
                {
                    name: '松原市',
                    value: '20',
                }
            ]
      };
  },
}
4、吉林省地图的绘制

geo:地理坐标系组件。用于地图的绘制,支持在地理坐标系上绘制散点图,线集。geo 区域的颜色也可以被 map series 所控制。

ECharts 可以使用 GeoJSON 格式的数据作为地图的轮廓,你可以获取第三方的 GeoJSON 数据注册到 ECharts 中。

geo: [
    {
        map: 'jilin',
        zoom: 1.2, // 默认显示级别
        itemStyle: { //设置地图板块配置选项
            normal: {
                // 图形的描边颜色
                borderColor: '#55aaff',
                // 描边线宽。
                borderWidth: 1,
                // 柱条的描边类型。
                borderType: 'solid',
                areaColor: '#083D7E',
            },
            // // 鼠标放上去后,样式改变
            emphasis: {
                // 图形的描边颜色
                borderColor: '#1DF9FC',
                borderWidth: '2',
                // 阴影色
                areaColor: '#3099E2',
            },
        },
        label: {
            show: false,
            formatter: '',
        },
    },
],

geo属性说明:

  • map:使用 registerMap 注册的地图名称。
  • zoom:当前视角的缩放比例。
  • itemStyle:地图区域的多边形 图形样式。
  • emphasis:高亮状态下的多边形和标签样式。
  • label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
5、柱状图样式

柱状图是利用3个样式层叠实现的。
1、顶部椭圆样式:type: ‘lines’
2、中部矩形样式:type: ‘scatter’
3、底部椭圆样式:type: ‘scatter’

type: 'lines',
zlevel: 5,
effect: {
    show: false,
    symbolSize: 5 // 图标大小
},
lineStyle: {
    width: 20, // 尾迹线条宽度
    color: 'rgb(22,255,255, .6)',
    opacity: 1, // 尾迹线条透明度
    curveness: 0 // 尾迹线条曲直度
},
6、设置柱状底部涟漪特效样式

带有涟漪特效动画的散点(气泡)图。利用动画特效可以将某些想要突出的数据进行视觉突出。

涟漪特效相关配置见下方代码注释。

type: 'effectScatter',
rippleEffect: { //涟漪特效相关配置
    period: 4, //动画的周期,秒数,值越小速度越快
    brushType: "stroke", //波纹的绘制方式,可选 'stroke' 和 'fill'
    scale: 2, //动画中波纹的最大缩放比例,值越大波纹越大 4
    color: 'rgb(22,255,255, 1)',//涟漪的颜色
    number: 2//波纹的数量
},
7、数据处理

根据接口数据,及经纬度坐标处理数据。

  • 动态计算柱形图的高度
lineMaxHeight() {
    const maxValue = Math.max(...this.testData.map(item => item.value))
    return 0.9 / maxValue
},
  • 柱状体的主干数据
lineData() {
    let {testData,geoCoordMap} = this
    return testData.map((item) => {
        return {
            coords: [geoCoordMap[item.name], [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight()]]
        }
    })
},
  • 柱状体的顶部
scatterTopData() {
    let {testData,geoCoordMap} = this
    return testData.map((item) => {
        return [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight(), item.value]
    })
},
  • 柱状体的底部
scatterBottomData() {
    let {testData,geoCoordMap} = this
    return testData.map((item) => {
        return {
            name: item.name,
            value: geoCoordMap[item.name]
        }
    })
},
三、示例代码已上传,去顶部可下载

附全部代码

<template>
    <div class="map" id="map"></div>
</template>

<script>
import * as echarts from "echarts";
import jilin from "@/json/jilin.json";
export default {
    data() {
        return {
            geoCoordMap: {
                "长春市": [125.31787, 44.05534],
                "吉林市": [126.68595, 43.85034],
                "通化市": [125.76539, 41.68568],
                "四平市": [124.02419, 43.48220],
                "白山市": [127.15109, 42.00513],
                "辽源市": [125.15042, 42.89406],
                "白城市": [122.83774, 45.07098],
                "延边朝鲜族自治州": [129.01009, 42.79950],
                "松原市": [124.55833, 44.94686],
            },
            testData: [
                {
                    name: '长春市',
                    value: '80',
                },
                {
                    name: '吉林市',
                    value: '70',
                },
                {
                    name: '通化市',
                    value: '60',
                },
                {
                    name: '四平市',
                    value: '50',
                },
                {
                    name: '白山市',
                    value: '90',
                },
                {
                    name: '辽源市',
                    value: '30',
                },
                {
                    name: '白城市',
                    value: '40',
                },
                {
                    name: '延边朝鲜族自治州',
                    value: '30',
                },
                {
                    name: '松原市',
                    value: '20',
                }
            ]
        };
    },
    created() {

    },
    mounted() {
        this.drawMap()
    },
    methods: {
        drawMap() {
            // 判断地图是否渲染
            let myChart = echarts.getInstanceByDom(document.getElementById("map"))
            // 如果渲染则清空地图 
            if (myChart != null) {
                myChart.dispose()
            }
            // 初始化地图
            myChart = echarts.init(document.getElementById("map"));

            echarts.registerMap("jilin", jilin)

            var option = {
                geo: [
                    {
                        map: 'jilin',
                        zoom: 1.2, // 默认显示级别
                        itemStyle: { //设置地图板块配置选项
                            normal: {
                                // 图形的描边颜色
                                borderColor: '#55aaff',
                                // 描边线宽。
                                borderWidth: 1,
                                // 柱条的描边类型。
                                borderType: 'solid',
                                areaColor: '#083D7E',
                            },
                            // // 鼠标放上去后,样式改变
                            emphasis: {
                                // 图形的描边颜色
                                borderColor: '#1DF9FC',
                                borderWidth: '2',
                                // 阴影色
                                areaColor: '#3099E2',
                            },
                        },
                        label: {
                            show: false,
                            formatter: '',
                        },
                    },
                ],
                series: [
                    // 柱状体的主干
                    {
                        type: 'lines',
                        zlevel: 5,
                        effect: {
                            show: false,
                            symbolSize: 5 // 图标大小
                        },
                        lineStyle: {
                            width: 20, // 尾迹线条宽度
                            color: 'rgb(22,255,255, .6)',
                            opacity: 1, // 尾迹线条透明度
                            curveness: 0 // 尾迹线条曲直度
                        },
                        silent: true,
                        data: this.lineData()
                    },
                    // 柱状体的顶部
                    {
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        zlevel: 5,
                        label: {
                            show: true,
                            formatter: function (e) {
                                return `数值:${e.data[2]}`
                            },
                            position: "top"
                        },
                        symbol: 'circle',
                        symbolSize: [20, 10],
                        itemStyle: {
                            color: 'rgb(22,255,255, 1)',
                            opacity: 1
                        },
                        silent: true,
                        data: this.scatterTopData()
                    },
                    // 柱状体的底部
                    {
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        zlevel: 4,
                        label: {
                            // 这儿是处理的
                            formatter: '{b}',
                            position: 'bottom',
                            color: '#fff',
                            fontSize: 12,
                            distance: 10,
                            show: true
                        },
                        symbol: 'circle',
                        symbolSize: [20, 10],
                        itemStyle: {
                            // color: '#F7AF21',
                            color: 'rgb(22,255,255, 1)',
                            opacity: 1
                        },
                        silent: true,
                        data: this.scatterBottomData()
                    },
                    // 底部外框
                    {
                        type: 'effectScatter',
                        rippleEffect: { //涟漪特效相关配置
                            period: 4, //动画的周期,秒数,值越小速度越快
                            brushType: "stroke", //波纹的绘制方式,可选 'stroke' 和 'fill'
                            scale: 2, //动画中波纹的最大缩放比例,值越大波纹越大 4
                            color: 'rgb(22,255,255, 1)',//涟漪的颜色
                            number: 2//波纹的数量
                        },
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        zlevel: 4,
                        label: {
                            show: false
                        },
                        symbol: 'circle',
                        symbolSize: [40, 20],
                        itemStyle: {
                            color: {
                                type: 'radial',
                                x: 0.5,
                                y: 0.5,
                                r: 0.5,
                                colorStops: [
                                    {
                                        offset: 0, color: 'rgb(22,255,255, 0)' // 0% 处的颜色
                                    },
                                    {
                                        offset: .74, color: 'rgb(22,255,255, 0)' // 100% 处的颜色
                                    },
                                    {
                                        offset: .75, color: 'rgb(22,255,255, 1)' // 100% 处的颜色
                                    },
                                    {
                                        offset: 1, color: 'rgb(22,255,255, 1)' // 100% 处的颜色
                                    }
                                ],
                            },
                        },
                        data: this.scatterBottomData()
                    }
                ]
            }
            myChart.setOption(option)
        },

        // 动态计算柱形图的高度
        lineMaxHeight() {
            const maxValue = Math.max(...this.testData.map(item => item.value))
            return 0.9 / maxValue
        },
        // 柱状体的主干
        lineData() {
            let {testData,geoCoordMap} = this
            return testData.map((item) => {
                return {
                    coords: [geoCoordMap[item.name], [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight()]]
                }
            })
        },
        // 柱状体的顶部
        scatterTopData() {
            let {testData,geoCoordMap} = this
            return testData.map((item) => {
                return [geoCoordMap[item.name][0], geoCoordMap[item.name][1] + item.value * this.lineMaxHeight(), item.value]
            })
        },
        // 柱状体的底部
        scatterBottomData() {
            let {testData,geoCoordMap} = this
            return testData.map((item) => {
                return {
                    name: item.name,
                    value: geoCoordMap[item.name]
                }
            })
        },
    },
}
</script>

<style scoped>
.map {
    width: 800px;
    height: 600px;
    position: relative;
}
</style>
四、效果展示

vue 市区地图+经纬度自定义显示弹窗详情,echarts,vue,vue.js,echarts,前端,柱状图,涟漪,地图,吉林文章来源地址https://www.toymoban.com/news/detail-774630.html

到了这里,关于vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • VUE+echart绘制地图(3D)

    上一篇分享了一个伪3D的地图,这次我们搞一个真实的3D地图。 效果图如下: 要实现这种效果,首先得引入两个不同的依赖: echarts-liquidfill和echarts-gl,引入很简单: 引入后开始我们的编码工作: template 部分: js部分: 按照步骤来就可以实现和效果图相同的效果,同理,也

    2024年02月11日
    浏览(65)
  • Echarts+高德地图,获取全国省市区,区域板块地图获取并高亮显示

    当用户选择省市区之后,可以看到对应区域的高亮显示。 如图: 之前用户选择的是江苏省,因此当前高亮显示的是江苏省地图板块,如果之前用户选择的是成都市,那么地图则会变成四川省的版图,高亮显示成都市,如下图: 可以继续下钻,选择区域高亮显示。 这里分享一个

    2024年02月16日
    浏览(48)
  • Vue3使用高德地图、搜索、地图选点、以及省市区三级联动

    1、准备工作 需要在 高德开发平台 申请自己的 key 和 密钥 这里的 Key 名称大家可以随意填写 申请完之后我们得到 key 和 密钥 vue中使用需要安装**@amap/amap-jsapi-loader --save** 官方文档 2、代码实现 首先我们需要三个文件,一个 index.vue 一个用来存放省市区的 index.js 文件 一个 ma

    2024年02月05日
    浏览(75)
  • 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日
    浏览(42)
  • vue-使用echarts+echarts-gl实现某个省份地区地图3d可视化

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

    2024年01月20日
    浏览(59)
  • vue echarts实现根据选择项年月时间切换数据显示柱状图,vue页面监听自适应

    echarts配置文档参考:Documentation - Apache ECharts 功能:可进行月度、年度切换显示相应的收入和支出柱状图数据; 这里进行了柱状图的简化配置,X轴Y轴都有所改写,具体的简化配置下文会贴出代码,参照功能开发时按照自己的需要去处理; 这里也会提到在开发时会遇到的问题

    2024年02月15日
    浏览(34)
  • 手把手教 Vue3.2+Vite+Echarts 5 绘制3D线条效果中国地图

    本篇文章介绍 Vue3.2+Vite 项目内使用 Echarts 5 绘制中国地图,标记分布点!之前没有接触过 Echarts 的,可以先去官方示例看看,里面图形特别齐全。但是官方文档看着费劲的,太多了根本记不住,所以自己做个总结,下次就可以直接使用了,不用做重复无用功。 1、下载并引入

    2024年02月04日
    浏览(53)
  • vue项目中使用echarts和china.js实现中国地图

    在echarts最新的5.4.0版本中,已不能直接引用china.js来绘制中国地图,需要我们自己下载china.js包 在网上查找资料,大部分是在index.html文件中直接引入echarts和china.js文件,但我使用这种方法在vue项目中引入失败,目前尝试可行的方法是把包下载到node_modules的echarts包里面,文件和

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

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

    2024年02月04日
    浏览(51)
  • vue+echarts 实现地图tooltip点击事件;toolTip数据动态渲染;同时鼠标滑过涟漪点时实现地图多区域联动

    最终做出来的效果是这样的: 最近做项目时,遇到这样的需求:         1、toolTip上的数据根据后台动态渲染         2、鼠标移入地图涟漪点时显示tootTip,点击toolTip上的文字,携带动态数据id进行路由跳转         3、鼠标移入地图涟漪点,与涟漪点相关的省份多区域联动

    2024年02月09日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包