ECharts添加地图标点(笔记)

本文介绍了一个使用ECharts绘制的广西地区医院分布地图,通过加载特定的JS文件和配置地图选项,实现了医院位置的精确标记,并提供了丰富的交互功能,如点击查询具体医院信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图:

实例html:

<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
       <!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script> -->
       <!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script> -->
       <!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script> -->
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
       <script type="text/javascript" src="E:\incubator-echarts-4.8.0\map\js\province\guangxi.js"></script>
       <!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script> -->
       <!-- <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=xfhhaTThl11qYVrqLZii6w8qE5ggnhrY&__ec_v__=20190126"></script>
       <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script> -->
       <script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
option = null;
var geoCoordMap = {
    "南宁医院":[108.324994,22.810701]
};

var convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
        var geoCoord = geoCoordMap[data[i].name];
        if (geoCoord) {
            res.push(geoCoord.concat(data[i].value).concat(data[i].name));
        }
    }
    console.log(res);
    return res;
};


option = {
    backgroundColor: '#fff',
    title: {
        text: '广西区合作医院分布',
        subtext: 'data from 数字广润',
        sublink: 'http://gxgrtech.com.cn/',
        left: 'center',
        textStyle: {
            color: '#000'
        }
    },
    tooltip: {
        trigger: 'item',
        //formatter: "名称:{a}<br />坐标:{c}"
        formatter:function(params){
            console.log(params);
            console.log(params.data[3]);
            var res = '名称:'+params.data[3]+'<br/>';
            return res;
        }

    },
    legend: {
        orient: 'vertical',
        top: 'bottom',
        left: 'right',
        data:['医院'],
        textStyle: {
            color: '#fff'
        }
    },
    visualMap: {
        min: 0,
        max: 300,
        splitNumber: 5,
        color: ['#d94e5d','#eac736','#50a3ba'],
        textStyle: {
            color: '#fff'
        },
        dimension:3
    },
    geo: {
        map: '广西',
        label: {
            normal: {
                show:true,
                areaColor: '#ffefd5',
                borderColor: '#111',
                textStyle:{color:"#c71585"}
            },
            emphasis: {
                show: false,
                textStyle:{color:"#fff"}
            }
        },
        itemStyle: {
            normal: {
                show:false,
                areaColor: '#ffefd5',
                borderColor: '#009fe8'
            },
            emphasis: {
                show:false,
                areaColor: '#f47920'
            }
        }
    },
    series: [
        {
            name: '医院',
            type: 'scatter',
            coordinateSystem: 'geo',
            data: convertData([
                {name: "南宁医院", value: 9}
            ]),
            encode: {
                value: 2
            },
            symbolSize: 12,
            label: {
                normal: {
                        show: false,//显示市区标签
                        textStyle:{color:"#c71585"}//省份标签字体颜色
                    },
                emphasis: {//对应的鼠标悬浮效果
                    show: true,    //关闭文字 (这东西有问题得关)
                    textStyle:{color:"#800080"}
                }
            },
            itemStyle: {
                normal: {
                        borderWidth: .5,//区域边框宽度
                        borderColor: '#009fe8',//区域边框颜色
                        areaColor:"#ffefd5",//区域颜色
                    },
                emphasis: {
                    show:true,
                    borderWidth: .5,
                    borderColor: '#4b0082',
                    areaColor:"#f47920",
                }
            }
        }
    ]
};
if (option && typeof option === "object") {
    myChart.setOption(option, true);
}
       </script>
   </body>
</html>
### 如何在 ECharts 地图添加标点 要在 ECharts 地图添加标记点,可以通过 `series` 配置项中的 `scatter` 或者 `effectScatter` 类型来实现。这些类型的系列可以用来表示地理坐标系下的散点分布,并支持通过经纬度数据定位到具体的位置。 以下是完整的示例代码以及详细的说明: #### 示例代码 ```javascript // 初始化 ECharts 实例 var myChart = echarts.init(document.getElementById('main')); // 定义地图名称和注册的地图 JSON 数据 echarts.registerMap('china', chinaJson); // 经纬度数据示例 var data = [ {name: '北京', value: [116.4074, 39.9042]}, {name: '上海', value: [121.4737, 31.2304]}, {name: '广州', value: [113.2644, 23.1291]} ]; // 配置选项 var option = { tooltip: { trigger: 'item', formatter: function (params) { return params.name; // 显示标记点的名称 } }, geo: { map: 'china', // 使用已注册的地图名 roam: true, // 开启缩放和平移 label: { normal: { show: false // 默认不显示区域名称 } }, itemStyle: { normal: { areaColor: '#eee', // 设置地图背景颜色 borderColor: '#333' // 设置边界线颜色 } } }, series: [{ type: 'effectScatter', // 散点类型,可选 scatter/effectScatter coordinateSystem: 'geo', // 坐标系为地理坐标系 data: data.map(function (item) { return {name: item.name, value: [...item.value, 1]}; // 将数据映射成所需格式 }), symbolSize: 15, // 标记点大小 label: { normal: { show: true, position: 'right', // 文本相对于标记点的位置 formatter: '{b}' // 显示标记点对应的名称 } }, rippleEffect: { brushType: 'stroke' // 涟漪效果样式 }, itemStyle: { normal: { color: '#FFD700' // 标记点的颜色 } } }] }; // 应用配置并渲染图表 myChart.setOption(option); ``` #### 关键配置解释 - **tooltip**: 提供悬浮提示功能,当鼠标移动到某个标记点时会弹出该点的信息[^1]。 - **geo**: 这是地图的核心配置项,负责加载地图数据并设置其外观属性[^1]。 - **series.type='effectScatter'**: 表示使用带有动画效果的散点图,在地理坐标系下展示标记点[^2]。 - **data.map(...)**: 对原始数据进行处理,将其转化为适合 ECharts 的输入格式[^2]。 - **symbolSize**: 控制标记点的大小[^1]。 - **label.normal.show=true**: 让每个标记点旁边都显示出对应的名字。 如果遇到文字重叠的情况,可以考虑调整字体大小或者隐藏部分标签,也可以尝试其他可视化库如百度地图 API 结合 ECharts 来解决更复杂的场景需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生莫如饥荒

如果对您有帮助,也可以给点赏钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值