首页 > 其他分享 >echarts 地图 map

echarts 地图 map

时间:2024-07-31 11:06:44浏览次数:12  
标签:map center 10 地图 zoom coord geo echarts option

今年来 数据可视化的需求变得越来越多
而地图在某些时候可能会更加直观 接下来就带大家
写一个简单的地图 最后会有gitee链接附上

一 html结构

<div style="position: relative">
    <div id="mapNew"></div>
</div>

二 css样式

#mapNew {
            width: 454px;
            height: 389px;
            background-color: pink;
        }

三 js重点部分
首先我们地图是通过echarts来展示的 我这里说的是数据展示这一块
在echarts渲染地图有一个mapType需要指定
当然你可以指定“china”“上海”啊这些echart预置的
我这里主要说说自定义的
代码部分:

       $.get("/sichuan.json", function (res) {
          echarts.registerMap('sichuan', res);// 注册四川地图 注册后 可以在mapType哪里使用
           let data =
            [
                {
                    "name": "蒲江库290吨",
                    "coord": [
                        "103.512570",
                        "30.202500"
                    ]
                },
                {
                    "name": "青白江库1073.5吨",
                    "coord": [
                        "104.257508",
                        "30.884415"
                    ]
                },
                {
                    "name": "大邑库30吨",
                    "coord": [
                        "103.527527",
                        "30.593149"
                    ]
                },
                {
                    "name": "自贡库43吨",
                    "coord": [
                        "104.779307",
                        "29.339240"
                    ]
                },
                {
                    "name": "广元库125吨",
                    "coord": [
                        "105.850419",
                        "32.441611"
                    ]
                },
                {
                    "name": "资阳库0吨",
                    "coord": [
                        "104.634437",
                        "30.134956"
                    ]
                }
            ]
         let series = [
            {
                type: 'map',
                mapType: 'sichuan', // 地图类型,这里使用中国地图
                animationDurationUpdate: 0,
                aspectScale: 0.7,
                center: data[2].coord,
                zoom: 1.2,
                top: 10,
                data: [
                    // 地图数据,例如:广东省的数据
                    {name: '成都市', value: 100}
                    // ... 其他省份数据
                ],
                tooltip: {
                    show: false
                },
                markPoint: {
                    symbol: 'circle', // 标记点形状 circle 圆形
                    symbolSize: 10, // 标记点大小
                    tooltip: {
                        show: false
                    },
                    itemStyle: {
                        normal: {
                            label: {
                                show: true,
                                position: 'right',
                                color: '#F08D7E',
                                fontSize: 13,
                                fontWeight: 600,
                                fontFamily: "PingFang SC",
                                formatter: function (params) {
                                    return params.data.name
                                },
                            },
                            color: '#ffffff',
                            borderColor: '#F08D7E',
                            borderWidth: 2
                        },
                    },
                    data: data
                },

            }
            // 线的样式

        ]
      let option = {
            geo: [
                {
                    map: 'sichuan',
                    aspectScale: 0.7,
                    zoom: 1.2,
                    top: 10,
                    center: data[2].coord,
                    animationDurationUpdate: 0,
                    roam: true,
                    label: {
                        show: false,
                        textStyle: {
                            color: '#fff',
                            fontSize: 12,
                        }
                    },
                    z: 5,//!*********重点*********可以看成是css的z-index,数字越大图层越高,我这里设置了5个,然后页面有点卡,根据实际需要来添加,3个其实就能看出效果了
                    itemStyle: {
                        areaColor: '#6899FF',//!****重点****每个图层的背景色,根据需要来调,由亮变暗,下面的几个颜色也一样
                        borderColor: '#ffffff',
                        borderWidth: 1,
                        shadowColor: '#6496fd',
                        shadowOffsetX: 0,
                        shadowOffsetY: 4,
                        shadowBlur: 10,
                        // 鼠标放上去后,样式改变
                        emphasis: {
                            // 图形的描边颜色
                            borderColor: '#fff',
                            borderWidth: '1',
                            // 阴影色
                            areaColor: '#548afa',
                            label: {
                                show: false,
                                textStyle: {
                                    color: '#fff',
                                    fontSize: 10,
                                },
                            }
                        },
                    },

                    tooltip: {
                        show: false
                    },
                },
                {
                    map: 'sichuan',
                    aspectScale: 0.7,
                    center: data[2].coord,
                    zoom: 1.2,
                    top: 10,
                    animationDurationUpdate: 0,
                    roam: true,
                    z: 4,//变小,也就是被压在下面
                    itemStyle: {
                        areaColor: '#6899FF',//记得改颜色
                        borderColor: '#ffffff',
                        borderWidth: 1,
                        shadowColor: '#6496fd',
                        shadowOffsetX: 0,
                        shadowOffsetY: 4,
                        shadowBlur: 10,
                    },
                },
                {
                    map: 'sichuan',
                    aspectScale: 0.7,
                    animationDurationUpdate: 0,
                    zoom: 1.2,
                    top: 10,
                    center: data[2].coord,
                    roam: true,
                    z: 4,//变小,也就是被压在下面
                    itemStyle: {
                        areaColor: '#6899FF',//记得改颜色
                        borderColor: '#ffffff',
                        borderWidth: 1,
                        shadowColor: '#6496fd',
                        shadowOffsetX: 0,
                        shadowOffsetY: 4,
                        shadowBlur: 10,
                    },
                },
            ],
           series: series
      }
 myChartMap = echarts.init(document.getElementById('mapNew'));//获取id
        myChartMap.setOption(option);
        myChartMap.on('georoam', (params) => {
            let option = myChartMap.getOption();//获得option对象
            let markPoint = myChartMap.getOption().series[0];
            let len = option.geo.length;
            if (params.zoom != null) { //捕捉到缩放时
                for (var i = 0; i < len; i++) {
                    option.geo[i].center = option.geo[0].center;
                    option.geo[i].zoom = option.geo[0].zoom;
                }
                markPoint.center = option.geo[0].center;
                markPoint.zoom = option.geo[0].zoom;
            } else {//捕捉到拖曳时
                for (var i = 0; i < len; i++) {
                    option.geo[i].center = option.geo[0].center;
                }
                markPoint.center = option.geo[0].center;
            }
            myChartMap.setOption(option);//设置option
            myChartMap.setOption({
                series: [markPoint]
            });
        })

最后也是附上效果图

以及源码地址:https://gitee.com/lymyself5926/echarts-map

标签:map,center,10,地图,zoom,coord,geo,echarts,option
From: https://www.cnblogs.com/ly5926/p/18334098

相关文章

  • 我可以在 Folium 地图上添加一系列标记吗?
    假设我有一个列表,或pandas系列,或纬度经度对。使用Folium,我可以使用coords=[46.8354,-121.7325]map_4=folium.Map(location=[46.8527,-121.7649],tiles='StamenTerrain',zoom_start=13)folium.Marker(location=coords).add_to(map_4)绘......
  • 【智能算法应用】A*和改进A*求解大规模栅格地图路径规划问题
    目录1.算法原理2.二值图像构建大规模栅格地图3.结果展示4.代码获取1.算法原理精准导航:用A*算法优化栅格地图的路径规划【附Matlab代码】改进A*算法通过删除必要的拐点或简化路径来减少路径长度,使得路径更为直观和高效。2.二值图像构建大规模栅格地图给定一幅二......
  • Mapbox添加多个不同的点图标
    1//添加多个点图2functionaddMorePoint(data){3if(mapboxMap.map.getSource('iconImageCircle')){4mapboxMap.map.removeLayer('iconCircle')5//mapboxMap.map.removeLayer('lineSources')6mapboxMap.map.removeSo......
  • Unity 摄像机跟随人物、人物走到地图边缘摄像机停止平移、手指长按屏幕摄像机平移
    1.摄像机跟随人物首先,你需要一个脚本来控制摄像机跟随人物。这个脚本应该附加到你的摄像机对象上。CameraFollow.csusingUnityEngine;publicclassCameraFollow:MonoBehaviour{publicTransformtarget;//指向你的人物对象publicfloatsmoothSpeed......
  • vue echarts图表添加背景图
    实现效果: 代码实现:varcolor=newecharts.graphic.LinearGradient(0,0,1,0,//这四个参数分别表示渐变的起点(x1,y1)与终点(x2,y2)的位置[{offset:0,color:'green'},//0%处的颜色{offset:0.5,color:'blue'},//50%处......
  • 深入理解HashMap扩容机制(JDK7)
    Hashmap扩容机制说明:该系列分为JDK7和JDK8,当前文章只讲解JDK7,JDK8扩容讲解请移步《深入理解HashMap扩容机制(JDK8)》一、扩容时机网上总结的会有很多,但大多都总结的不够完整或者不够准确。大多数可能只说了满足我下面条件一的情况。扩容必须满足两个条件:存放新值的时候当......
  • Collectors.toMap的几个注意点
    1、Collectors.toMap注意点1、key不能有重复,否则会报错2、value不能为空,否则报空指针2.解决方法不使用stream不使用stream时,需要先new一个map,然后手动把list的每一项放入mappublicvoidtest0(){Useruser1=newUser();user1.setId(1L);......
  • 点数据未渲染 - 散布地图框
    我正在使用plotly绘制一个散点图框。底图工作正常,但点未渲染。如果我打印图像,点就会出现。如果我还将.show()添加到图中,则会有一个单独的链接显示这些点。但我希望下拉栏选择单个状态和要可视化的点。我不知道我做错了什么?importdashfromdashimportDash,dcc,html,In......
  • js-数组内置函数-filter、map、forEach、reduce
    1、过滤数组-filter筛选数组元素,并生成新数组//过滤出分数为60分以上的数据<script>constarr=[{'name':'张三','score':80},{'name':'张六','score':50},{'name':'李四','score&#......
  • STL用法总结(二)(deque,map,set)
    4.deque(双端队列)1.介绍首尾都可插入和删除的队列为双端队列#include<deque>//初始化定义deque<int>dq;2.方法函数代码含义q.push_back(x)/pusu_front(x)把x插入队尾/队首q.back()/front()返回队尾/队首元素q.pop_back()/pop_front()删除队尾/队首元素q.erase(ite......