Echarts地图组件,可拖拽超出父盒子范围问题解决

问题:在使用echarts地图时候,开启地图可拖拽功能,会出现地图拖出父级范围,消失不见;
解决方法:
// 给父盒子绑定离开事件
<div @mouseleave="mouseleave"></div>

methods:{
	// 鼠标离开父盒子范围,重绘地图
	mouseleave(){
		this.chart.setOption(this.option,true)
	}
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
很高兴为您解答。以下是一个简单的示例代码,可以实现您所需的功能: HTML: ```html <div id="map-container"> <div id="map"></div> </div> ``` CSS: ```css #map-container { width: 800px; height: 600px; overflow: hidden; position: relative; } #map { width: 100%; height: 100%; } ``` JavaScript: ```javascript // 初始化地图 var myChart = echarts.init(document.getElementById('map')); // 设置地图选项 var option = { // ... }; // 渲染地图 myChart.setOption(option); // 获取地图容器 var mapContainer = document.getElementById('map-container'); // 获取地图容器的位置和尺寸 var containerRect = mapContainer.getBoundingClientRect(); // 记录地图容器的边界 var containerLeft = containerRect.left; var containerTop = containerRect.top; var containerRight = containerRect.right; var containerBottom = containerRect.bottom; // 记录当前地图的位置 var mapLeft = 0; var mapTop = 0; // 监听地图拖动事件 myChart.on('drag', function(params) { // 获取地图移动的偏移量 var dx = params.event.dx; var dy = params.event.dy; // 计算地图的新位置 var newLeft = mapLeft + dx; var newTop = mapTop + dy; // 判断地图是否超出容器边界 if (newLeft > containerLeft) { newLeft = containerLeft; } if (newTop > containerTop) { newTop = containerTop; } if (newLeft + containerRect.width < containerRight) { newLeft = containerRight - containerRect.width; } if (newTop + containerRect.height < containerBottom) { newTop = containerBottom - containerRect.height; } // 更新地图位置 myChart.setOption({ geo: { left: newLeft, top: newTop } }); // 记录地图的新位置 mapLeft = newLeft; mapTop = newTop; }); ``` 在这个示例中,我们通过监听地图拖动事件来实现地图拖动,并且在拖动过程中判断地图是否超出了容器边界,如果超出了就将地图的位置调整到容器边界上。这样就可以实现地图拖动时当地图边缘超出元素边框时停止拖动的效果。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值