百度地图中心点偏移-Javascript

4 篇文章 1 订阅
3 篇文章 0 订阅

功能介绍:

本文记录了百度地图BMap实现中,出现中心点偏移问题解决方法,基于点聚合功能出现的问题。
地图正常显示效果:
在这里插入图片描述

地图实际显示效果:
在这里插入图片描述

整体思路:

原代码:
注意:这里为了实现效果使用了原生js的代码直接控制display改变,实际应用中可能是jQuery的hide()、show(),vue中的v-if控制切换地图显隐。

<body>
	<div id="map" style="width: 1200px;height: 800px;display: none"></div>
</body>
<script>
	// 创建地图实例
	const map = new BMap.Map('map');
	// 配置中心点坐标
	const center = new BMap.Point(106.5, 35.8);
	// 设定地图的中心点坐标和缩放值
	map.centerAndZoom(center, 5);
	// 启用滚轮放大缩小功能
	map.enableScrollWheelZoom(true);
	document.getElementById('map').style.display = 'block';
</script>

正常百度地图的中心点应按照设置点进行显示,此处明显向左上角方向发生偏移,查询资料后发现是因为原容器进行了隐藏处理(display:none),百度地图init初始化在dom元素解除隐藏之前,会认为容器的宽高为0,基于这个思路向下解决,解决方法如下。

具体实现:

一、变更代码执行顺序:

先解除容器的隐藏再初始化地图:

<script>
	document.getElementById('map').style.display = 'block';
	// 创建地图实例
	const map = new BMap.Map('map');
	// 配置中心点坐标
	const center = new BMap.Point(106.5, 35.8);
	// 设定地图的中心点坐标和缩放值
	map.centerAndZoom(center, 5);
	// 启用滚轮放大缩小功能
	map.enableScrollWheelZoom(true);
</script>

二、map.panBy:

设置地图偏移,偏移像素为容器宽高的二分之一,实际开发中应计算获取容器宽高:

let centerX = 600; // 容器宽度的二分之一
let centerY = 400; // 容器高度的二分之一
map.panBy(centerX, centerY); // 中心点偏移像素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值