echarts地图3D效果

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

echarts地图3D效果


 文章来源地址https://www.toymoban.com/news/detail-504675.html

<template>
    <div class="app-container">
        <div class="chart-wrapper">
            <div id="chinaMap" style="width: 100%;height: 80vh;"></div>
        </div>
    </div>
</template>
<script>
    import * as echarts from 'echarts'
    import chinaJson from './china.json' // 这个是中国地图json 
    import 'echarts-gl'
    export default {
        name: '',
        data() {
            return {
                chinaMapData: [{
                        name: '东北',
                        value: this.randomValue(),

                    },
                    {
                        name: '华北',
                        value: this.randomValue()
                    },
                    {
                        name: '西北',
                        value: this.randomValue()
                    },
                    {
                        name: '西南',
                        value: this.randomValue()
                    },
                    {
                        name: '华中',
                        value: this.randomValue()
                    },
                    {
                        name: '华南',
                        value: this.randomValue()
                    },
                    {
                        name: '华东',
                        value: this.randomValue()
                    }
                ],
                chinaDaquGeo: {}
            }
        },
        methods: {
            progressFormat(percentage) {
                return ""
            },
            randomValue() {
                return Math.round(Math.random() * 1000);
            },
            drawChinaMap(id) {
                this.mapCharts = echarts.init(document.getElementById(id));
                var option = {
                    tooltip: {
                        // show:false
                        // formatter: function(params, ticket, callback) {
                        //     return params.seriesName + '<br />' + params.name + ':' + params.value
                        // } //数据格式化
                    },
                    // visualMap使用了不能单独对板块设置颜色 (geo-> regions -> itemStyle -> areaColor )
                    visualMap: {
                        min: 0,
                        max: 1500,
                        left: 'left',
                        top: 'bottom',
                        type: "piecewise",
                        //text: ['高','低'],//取值范围的文字
                        inRange: {
                            color: ['#e0ffff', '#006edd'] //取值范围的颜色
                        },
                        show: true //图注
                    },
                    // geo: {
                    //     map: 'china',
                    //     roam: true, //不开启缩放和平移
                    //     zoom: 1, //视角缩放比例
                    //     center: [108.5525, 34.3227],
                    //     label: {
                    //         normal: {
                    //             show: true,
                    //             fontSize: '18',

                    //             color: 'rgba(0,0,0,0.7)'
                    //         }
                    //     },
                    //     regions: [{ // 可对单个地图区域进行设置
                    //         name: '华北', // 所对应的地图区域的名称
                    //         //regionHeight: '',            // 区域的高度,可以设置不同的高度用来表达数据的大小。当 GeoJSON 为建筑的数据时,也可以通过这个值表示简直的高度。
                    //         itemStyle: { // 单个区域的样式设置
                    //             color: '#00FF00',
                    //             opacity: 1,
                    //             borderWidth: 0.4,
                    //             areaColor: '#5F9EA0'
                    //         },
                    //         emphasis: { // 鼠标 hover 高亮时图形和标签的样式 (当鼠标放上去时  label和itemStyle 的样式) 
                    //             label: { // label高亮时的配置
                    //                 show: true,
                    //                 textStyle: {
                    //                     color: '#fff   ', // 高亮时标签颜色变为 白色
                    //                     fontSize: 15, // 高亮时标签字体 变大
                    //                 }
                    //             },
                    //             itemStyle: { // itemStyle高亮时的配置
                    //                 areaColor: '#5F9EA0', // 高亮时地图板块颜色改变
                    //             }
                    //         },
                    //     }, {
                    //         name: '西南',
                    //         itemStyle: {
                    //                 areaColor: 'red',
                    //                 color: 'red',
                    //                  borderColor:'red'
                    //             },
                    //         emphasis: { // 鼠标 hover 高亮时图形和标签的样式 (当鼠标放上去时  label和itemStyle 的样式) 
                    //             label: { // label高亮时的配置
                    //                 show: true,
                    //                 textStyle: {
                    //                     color: '#fff   ', // 高亮时标签颜色变为 白色
                    //                     fontSize: 15, // 高亮时标签字体 变大
                    //                 }
                    //             },
                    //             itemStyle: { // itemStyle高亮时的配置
                    //                 areaColor: '#F3B329', // 高亮时地图板块颜色改变
                    //             }
                    //         },
                    //     }],
                    //     itemStyle: {
                    //         normal: {
                    //             borderColor: 'rgba(0, 0, 0, 0.2)'
                    //         },
                    //         emphasis: {
                    //             areaColor: '#F3B329', //鼠标选择区域颜色
                    //             shadowOffsetX: 0,
                    //             shadowOffsetY: 0,
                    //             shadowBlur: 20,
                    //             borderWidth: 0,
                    //             shadowColor: 'rgba(0, 0, 0, 0.5)'
                    //         }
                    //     }
                    // },
                    geo: [{
                                                map: 'china',
                                                zlevel:5,
                                                label: {
                                                    show: true,
                                                    color: '#eee'
                                                },
                                                itemStyle: {
                                                    color: '#2075B8', // 背景
                                                    borderWidth: '1', // 边框宽度
                                                    borderColor: '#fff', // 边框颜色
                                                }
                                            },
                                            {
                                                map: 'china',
                                                top:'11%',
                                                zlevel:4,
                                                itemStyle: {
                                                    color: '#3C5FA1', // 背景
                                                    borderWidth: '1', // 边框宽度
                                                    borderColor: '#3C5FA1', // 边框颜色
                                                }
                                            },
                                            {
                                                map: 'china',
                                                top:'12%',
                                                zlevel:3,
                                                itemStyle: {
                                                    color: '#163F6C', // 背景
                                                    borderWidth: '1', // 边框宽度
                                                    borderColor: '#163F6C', // 边框颜色
                                                }
                                            },
                                            {
                                                map: 'china',
                                                top:'13%',
                                                zlevel:2,
                                                itemStyle: {
                                                    color: '#31A0E6', // 背景
                                                    borderWidth: '1', // 边框宽度
                                                    borderColor: '#31A0E6', // 边框颜色
                                                    shadowColor: '#fff',  // 外部阴影 
                                                    shadowBlur:'10'
                                                }
                                            }
                                        ],
                    
                
                    series: [
                        // {
                        //            type: "scatter",
                        //            roam: false,
                        //            zoom: 1,

                        //            coordinateSystem: "geo",
                        //            data: [[121.221, 23.43, 12]], //散点的数据
                        //            symbol: function (params) {
                        //               return "image://http://47.96.130.88:9000/liughhxcdmsg/temp/xiangmu_1676884761006.png" ;
                        //              // if (params[2] === "0") {
                        //              //   return "image://" + process.env.BASE_URL + "map/1.svg";
                        //              // } else if (params[2] === "1") {
                        //              //   return "image://http://47.96.130.88:9000/liughhxcdmsg/temp/xiangmu_1676884761006.png" ;
                        //              // }
                        //            }, // svg图标
                        //            z: 2,
                        //            symbolSize: [48.63, 40], // symbols图标大小
                        //          },

                        {
                            name: '事业部',
                            type: 'map',
                                // type: 'map3D',
                            geoIndex: 0,
                            data: this.chinaMapData,

                            markPoint: { //图表标注。
                                label: {
                                    normal: {
                                        show: true,
                                    },
                                    emphasis: {
                                        show: true,
                                    }
                                },
                                itemStyle: {
                                    normal: {
                                        color: 'rgba(72,150,128,1)'
                                    }
                                },
                                data: [{
                                    name: "四川移动",
                                    coord: [
                                        123.97, 47.33 //坐标,通过百度地图提取
                                    ],
                                    symbol: 'http://47.96.130.88:9000/liughhxcdmsg/temp/xiangmu_1676884761006.png', // 标注图片地址路径
                                    symbolSize: 32,
                                    service: '这个是自定义的字段,不是echarts的配置',
                                    url: '这个也是自定义的字段,不是echarts的配置'
                                }, {
                                    name: "河南电信",
                                    coord: [
                                        105.97, 36.33
                                    ],
                                    symbol: 'http://47.96.130.88:9000/liughhxcdmsg/temp/xiangmu_1676884761006.png', // 标注图片地址路径
                                    symbolSize: 32,
                                    service: '自定义',
                                    url: 'http://www.idcd.com'
                                }, ]
                            }
                        },
                        // 散点图
                        { // 涟漪效果
                            name: 'Top 6',
                            type: 'effectScatter',
                            coordinateSystem: 'geo',
                            data: [{
                                    name: "苏尼特左旗",
                                    value: [113.653412, 43.854108, 4500]
                                },
                                {
                                    name: "二连浩特市",
                                    value: [111.97981, 43.652895, 3560]
                                },
                                {
                                    name: "阿巴嘎旗",
                                    value: [114.970618, 44.022728, 3300]
                                },
                                {
                                    name: "苏尼特右旗",
                                    value: [112.65539, 42.746662, 2800]
                                },
                                {
                                    name: "正镶白旗",
                                    value: [115.031423, 42.286807, 2100]
                                },
                                {
                                    name: "太仆寺旗",
                                    value: [115.28728, 41.895199, 1900]
                                }
                            ],
                            symbolSize: function(val) {
                                return val[2] / 200;
                            },
                            encode: {
                                value: 2
                            },
                            showEffectOn: 'render',
                            rippleEffect: {
                                brushType: 'stroke', //fill 、stroke
                                color: 'red'
                            },
                            emphasis: {

                                scale: false
                            },
                            label: {
                                position: 'left',
                                // formatter: '{b}',
                                position: 'right',
                                show: true,
                                // formatter:'{b}'
                                formatter: '{b}: {@score}'
                                // formatter: function(params) {
                                //     // console.log(params)
                                //     return `${params.data.name}:${params.data.value[2]}个`
                                // } //数据格式化
                            },
                            hoverAnimation: true, //是否开启鼠标 hover 的提示动画效果
                            itemStyle: {
                                shadowBlur: 10,
                                shadowColor: 'rgba(230, 10, 10, 1)',
                                color: 'red'
                            },
                            zlevel: 8
                        }

                    ]
                };
                this.mapCharts.setOption(option);

                this.mapCharts.on('click', params => {
                    console.log(params)
                    let clickRegionCode = params.data.cityCode;
                    // this.getGeoJson(clickRegionCode)
                    //     .then(regionGeoJson => this.initEcharts(regionGeoJson.data, params.data.cityCode))
                    //     .catch(err => {
                    //         this.getGeoJson('440000').then(GdGeoJson => this.initEcharts(GdGeoJson.data,
                    //             '440000'))
                    //     })
                })
                // },

                /*this.mapCharts.on('click', function (params) {
                  alert(params.name);
                });*/
            },

            //划分大区
            mergeProvinces(chinaJson, names, properties) { //合并大区里省份的coordinates
                var features = chinaJson.features;
                var polygons = [];
                for (var i = 0; i < names.length; i++) {
                    var polygonsCoordinates = [];
                    for (var z = 0; z < names[i].length; z++) {
                        for (var j = 0; j < features.length; j++) {

                            if (features[j].properties.name == names[i][z]) {
                                // polygonsCoordinates.push(features[j].geometry.coordinates[k][d]);
                                // if (features[j].geometry.coordinates[0].constructor == String) { //合并coordinates
                                //     for (var l = 0; l < features[j].geometry.coordinates.length; l++) {
                                //         polygonsCoordinates.push(features[j].geometry.coordinates[l]);
                                //     }

                                // } else if (features[j].geometry.coordinates[0].constructor == Array) {
                                for (var k = 0; k < features[j].geometry.coordinates.length; k++) {

                                    if (features[j].properties.name == '内蒙古自治区') {
                                        polygonsCoordinates.push(features[j].geometry.coordinates[k]);
                                    } else {
                                        for (var d = 0; d < features[j].geometry.coordinates[k].length; d++) {

                                            polygonsCoordinates.push(features[j].geometry.coordinates[k][d]);

                                        }
                                    }
                                    //         for (var d = 0; d < features[j].geometry.coordinates[k].length; d++) {

                                    //                 polygonsCoordinates.push(features[j].geometry.coordinates[k][d]);

                                    //         }
                                }
                                // }
                                break;
                            }
                        }
                    }
                    polygons.push(polygonsCoordinates);
                }

                // 构建新的合并区域
                var features = [];

                for (var a = 0; a < names.length; a++) {
                    var feature = {
                        id: features.length.toString(),
                        type: "FeatureCollection",
                        geometry: {
                            type: "Polygon",
                            coordinates: polygons[a]
                        },
                        properties: {
                            name: properties.name[a] || "",
                            childNum: polygons[a].length
                        }
                    };
                    if (properties.cp[a]) {
                        feature.properties.cp = properties.cp[a];
                    }

                    // 将新的合并区域添加到地图中
                    features.push(feature);
                }
                console.log(polygons)
                this.chinaDaquGeo.type = "FeatureCollection";
                this.chinaDaquGeo.features = features;
            },

            repRegionStrategy() {
                var params = {
                    names: [ //把各个大区的省份用二维数组分开
                        ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区'],
                        ["黑龙江省", "吉林省", "辽宁省"],
                        ['山东省', '江苏省', '安徽省', '江西省', '浙江省', '福建省', '上海市', '台湾省'],
                        ['河南省', '湖北省', '湖南省'],
                        ['广东省', '广西壮族自治区', '海南省', '香港特别行政区', '澳门特别行政区'],
                        ['重庆市', '四川省', '云南省', '西藏自治区', '贵州省'],
                        ['陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区']
                    ],
                    properties: { //自定义大区的名字,要和上面的大区省份一一对应
                        name: ['华北', '东北', '华东', '华中', '华南', '西南', '西北'],
                        cp: [ //经纬度可以自己随意定义
                            [116.24, 40.54],
                            [126.32, 43.50],
                            [121.28, 31.13],
                            [114.20, 30.32],
                            [113.15, 23.08],
                            [104.04, 30.39],
                            [103.49, 36.03]
                        ]
                    }
                };
                this.mergeProvinces(chinaJson, params.names, params.properties);
            }
        },
        //调用
        created() {
            this.repRegionStrategy()
            // 注册地图 
            echarts.registerMap('china', this.chinaDaquGeo) // 如果是js引入就不需要这一行了
            
        },
        mounted() {
            // this.repRegionStrategy()
            // // 注册地图
            // this.echarts.registerMap('china', this.chinaDaquGeo) // 如果是js引入就不需要这一行了
            this.$nextTick(function() {
                this.drawChinaMap('chinaMap')
                // this.repRegionStrategy()
                // 注册地图
                // this.echarts.registerMap('china', this.chinaDaquGeo) // 如果是js引入就不需要这一行了
            })
        }
    }
</script>
<style scoped>
    #chinaMap {
        background-color: beige;
    }
</style>

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

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

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

相关文章

  • 前端echarts地图3D效果+点击地域出现弹出框可以有确定取消操作

    效果图如下:    代码如下: 运行3D项目要安装一下echarts-gl依赖: 引入的jiangsu文件要单独下载json文件,附上两个网址: DataV.GeoAtlas地理小工具系列 POI数据|高德POI|高德兴趣点|高德POI数据|高德POI下载|高德POI数据库|高德POI分类|高德北京市POI|高德上海市POI|高德广州市POI|高德

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

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

    2024年02月04日
    浏览(53)
  • echarts 使用地图,设置背景图片和高亮图片,点击实现高亮显示,更换散点图图片,高亮散点图形,3D悬浮效果展示地图,集成Vue组件

    先看下   需要实现的效果: 第一步 需准备需要的插件  1  注意新版 echarts 的引入方式为:  import * as echarts from \\\'echarts\\\',这里我把 echarts 直接挂载到了Vue上,本项目使用echarts比较多,这样的话很方便,也可以在需要echarts的模块按需引入        在main.js中添加以下代码:

    2024年02月10日
    浏览(59)
  • echarts地图 可视化大屏使用echarts-map实现地图轮播效果

    记录一下大屏开发中使用到的echartsMap 大屏的页面根据需求前前后后改了几个版本了,地图的样式也改了又改 这里记录一下,因为echarts属性用到的比较多也比较杂,防止以后需要用到忘记了 初始效果 效果图: 适应大屏风格的发光地图效果,用了两个图层实现叠加背景图片实

    2024年02月16日
    浏览(40)
  • echarts绘制3D地图

    echarts绘制3D地图实现平移、缩放 所需依赖  准备工作:main.js中引入依赖   先上图 代码直接复制粘贴就可以使用了,根据自己需求稍作修改就可以使用了  html代码部分 js代码部分 绘制3D地图可能会引起地图上标注点,跟所需点有偏差的情况,这样需要去修改引用的json文件

    2024年02月11日
    浏览(40)
  • Echarts 3d地图

    Echarts官方网址:https://echarts.apache.org/zh/index.html 使用echarts绘制3d地图以及在3d地图上绘制江苏省区域边界飞线图以及3d柱状图和3d散点. 江苏省.JEOJSON https://download.csdn.net/download/qq_43557302/86399879

    2024年02月11日
    浏览(29)
  • 【地图可视化】Echarts地图上展示3D柱体

    这是以前有这方面可视化的需求做的,找了很多资料,最后感觉这样的效果比较满意。 效果展示  以下以江苏省的地图为例: 数据准备 对于想要做3d效果的地区,需要准备对应的json文件 可以在这个网站上下载,数据最小粒度可以具体到县: DataV.GeoAtlas地理小工具系列 这里

    2023年04月19日
    浏览(49)
  • VUE+echart绘制地图(3D)

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

    2024年02月11日
    浏览(65)
  • echarts地图组件-地图纹理、地图3D投影、多个geo缩放同步

    1.实现效果: 2.实现代码: ①geo:{ // geo设置,outShadow为是否开启3D阴影;若开启,则layoutCenter要设置大一点偏移造成底部外框阴影效果,areaColor是区块的颜色,shadowColor是阴影的颜色 { map: \\\"jiangxi\\\", layoutCenter: this.option.outShadow ? [\\\"50%\\\", \\\"51.5%\\\"] : [\\\"50%\\\", \\\"50%\\\"], //地图位置 layoutSize: \\\"11

    2024年02月04日
    浏览(41)
  • echarts实现中国地图记录篇之2D,3D地图

    工具: 实现2D平面地图需要用到的包为:echarts 实现3D地图需要用到的包为:echarts,echarts-gl 版本 —— echarts5.0+和5.0以下版本的差异: echarts 5.0以下的版本,做中国地图,推荐使用\\\"echarts\\\": \\\"^4.9.0\\\"版本,安装、引入和使用方式,如下: Echarts官方在5+版本中移除了echarts/map/js/china.

    2023年04月08日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包