echarts(一)之地图连线动效

博客展示了地图效果,给出了实现该效果的HTML代码以及map.js代码,涉及地图相关信息技术内容。

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

效果如下:
在这里插入图片描述
HTML如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>北京地图</title>
		<script type="text/javascript" src="js/jquery-1.8.3.min.js" ></script>
		<script type="text/javascript" src="js/echarts.js" ></script>
		<script type="text/javascript" src="js/map.js" ></script>
	</head>
	<style>
		html,body{
			margin: 0;
			padding: 0;
			width: 100%;
			height:100%;
		}
		.echarts-wrapper{
			width: 100%;
			height:100%;
			margin: auto;
		}
		.echarts-wrapper-china{
			position: absolute;
			bottom: 20px;
			right:20px;
			width: 220px;
			height:160px;
			border: 1px solid #09b8c0;
		}
	</style>
	<body>
		<div class='echarts-wrapper' id="beijing"></div>
		<div class='echarts-wrapper-china' id="china"></div>
	</body>
</html>

map.js如下:

$(function(){
	initBeijing();	
	initChina();
});
function initBeijing(){
	var chart = echarts.init(document.getElementById("beijing"));
    $.getJSON('json/beijing.json', function(data) {
        echarts.registerMap('beijing', data);
        chart.setOption({
            geo : {
                type : 'map',
                map : 'beijing',
                layoutCenter : [ '50%', '50%' ],
                layoutSize : '100%',
                label : {
                    normal : {
                        show : false,
                        textStyle : {
                            color : '#fff'
                        }
                    },
                    emphasis : {
                        show : false,
                        textStyle : {
                            color : '#fff'
                        }
                    }
                },
                itemStyle : {
                    normal : {
                        areaColor : 'rgba(24,65,91,0)',
                        borderColor : '#23a8b3',
                        borderWidth : 1,
                        shadowColor : '#365661',
                        shadowBlur : 10
                    },
                    emphasis : {
                        areaColor : 'rgba(24,65,91,0)'
                    },
                }
            },
            series: [{
				name: '北京行政图',
				type: 'lines',
				zlevel: 2,
				symbol: ['none', 'arrow'],
				symbolSize: 10,
				lineStyle: {
					normal: {
						color: {
						    type: 'linear',
						    x: 0,
						    y: 0,
						    x2: 0,
						    y2: 1,
						    colorStops: [{
						        offset: 0, color: 'rgba(111, 113, 76, 1)' // 0% 处的颜色
						    }, {
						        offset: 1, color: 'rgba(255, 255, 134, 1)'  // 100% 处的颜色
						    }],
						    global: false // 缺省为 false
						},
						width: 1,
						opacity: 0.6,
						curveness: -0.5
					},
					
					
				},
				data: [{
					coords: [
					    [118.4100, 39.6410], 
						[115.9700, 40.4500] //延庆
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.6300, 40.3200]//怀柔
					]
				},{
					coords: [
					    [118.4100, 39.6410], 
						[116.8300, 40.3700]//密云县
						
					]
				},{
					coords: [
					    [118.4100, 39.6410], 
						[116.65, 40.1300]//顺义
						
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.2800, 39.8500]//丰台区
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.2300, 40.2200]//昌平区
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.3000, 39.9500]//海淀
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.4300, 39.9200]//朝阳
					]
				},{
				    coords: [
				        [118.4100, 39.6410], 
						[116.4200, 39.9300]//东城
					]
				}]
			}, {
				type: 'effectScatter',
				coordinateSystem: 'geo',
				zlevel: 2,
				label: {
					normal: {
						show: true,
						position: 'right',
						formatter: '{b}'
					}
				},
				symbolSize: function(val) {
		            var symbolSize;
		            if (val[2] / 12 >= 6) {
		                symbolSize = 6;
		            } else if (val[2] / 12 <= 3) {
		                symbolSize = 3;
		            } else {
		                symbolSize = val[2] / 12;
		            }
		            return symbolSize;
		        },
				itemStyle: {
					normal: {
						color: '#a6c84c',
					}
				},
				data: [{
				    name: '延庆',
					value: [115.9700, 40.4500] //延庆
				},{
					name: '怀柔',
					value: [116.6300, 40.3200]//怀柔
				}, {
					name: '密云县',
					value: [116.8300, 40.3700]//密云县
				},{
				    name: '顺义',
					value: [116.65, 40.1300]//顺义
				},{
				    name: '丰台区',
					value: [116.2800, 39.8500]//丰台区
				},{
				    name: '昌平区',
					value: [116.2300, 40.2200]//昌平区
				},{
				    name: '海淀',
					value: [116.3000, 39.9500]//海淀
				},{
				    name: '朝阳',
					value: [116.4300, 39.9200]//朝阳
				},{
				    name: '东城',
					value: [116.4200, 39.9300]//东城
				}]
			}]
	    })
    });
    $(window).resize(function () {
        chart.resize();
    });
}

function initChina(){
	var chart = echarts.init(document.getElementById("china"));
    $.getJSON('json/china.json', function(data) {
        echarts.registerMap('china', data);
        chart.setOption({
        	geo: {
        		type : 'map',
                map : 'china',
                zoom: 1.3,   //这里是关键,一定要放在 series中
                layoutCenter : [ '50%', '50%' ],
                layoutSize : '100%',
                label : {
                    normal : {
                        show : false,
                        textStyle : {
                            color : '#fff'
                        }
                    },
                    emphasis : {
                        show : false,
                        textStyle : {
                            color : '#fff'
                        }
                    }
                },
                itemStyle : {
                    normal : {
                        areaColor : 'rgba(24,65,91,0)',
                        borderColor : '#408087',
                        borderWidth : 1,
                    },
                    emphasis : {
                        areaColor : 'rgba(24,65,91,0)'
                    },
                }
        	},
          	series: [
			{
				type: 'effectScatter',
				coordinateSystem: 'geo',
				zlevel: 2,
				rippleEffect: {
					brushType: 'stroke'
				},
				label: {
					normal: {
						show: true,
						position: 'right',
						formatter: '{b}'
					}
				},
				symbolSize: function(val) {
		            var symbolSize;
		            if (val[2] / 12 >= 6) {
		                symbolSize = 6;
		            } else if (val[2] / 12 <= 3) {
		                symbolSize = 3;
		            } else {
		                symbolSize = val[2] / 12;
		            }
		            return symbolSize;
		        },
				itemStyle: {
					normal: {
						color: '#a6c84c',
					}
				},
				data: [{
				    name: '',
					value: [118.4100, 39.6410],
				}]
			}]
        })
    });
    $(window).resize(function () {
        chart.resize();
    });
}

### 实现 ECharts 地图上的连线果 要在 ECharts 中实现在地图上绘制连线果,可以利用 `lines` 类型的数据集。此功能允许开发者在地理坐标之间创建连接线,从而展示路径或关系。 对于初始化部分,需先加载必要的库文件并设置好容器用于承载图表实例[^2]: ```javascript import * as echarts from 'echarts'; // 假设已通过 script 标签或其他方式引入 china.js 和 echarts.min.js 文件 ``` 接着,在配置项中指定 `geo` 属性以启用地理模式,并定义 `series` 数组中的个对象为线条系列(`type: 'lines'`),同时提供起始点和终点的位置信息作为数据源[^5]: ```javascript var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); var option; option = { geo: { // 设置地图样式和其他属性 map: 'china', roam: true, zoom: 1.2, label: { show: false }, itemStyle: { areaColor: '#eee' } }, series: [{ type: 'lines', // 定义为 lines 类型 coordinateSystem: 'geo', // 使用地理坐标系 data: [ {coords:[[经度1,纬度1],[经度2,纬度2]]}, // 这里填写具体的经纬度数值 ... ], lineStyle: { width: 1, opacity: 0.6, curveness: 0.2 } }] }; if (option && typeof option === 'object') { myChart.setOption(option); } ``` 上述代码片段展示了如何基于中国地图构建基本的地图连线可视化应用。其中 `data` 字段内的每项都是条记录,表示条从某地到另地点之间的线路;而每条记录内部则由两个数组组成,分别代表起点与终点的地理位置(即经纬度)。 为了使这些线条更加生形象,还可以进步调整其外观特性,比如颜色渐变、透明度变化或是弯曲程度等参数,具体可参照官方文档获取更多定制化选项[^3]。 最后提醒点,当涉及到复杂场景下的多条路线规划时,建议预先处理好所有的位置信息,并确保它们能够被正确解析成有的 GeoJSON 或者其他支持格式,以便于顺利渲染至页面之上[^1]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值