在百度地图项目中引入InfoBox_min.js完成自定义样式的信息弹窗,但是当要关闭该弹窗时,官方给的方案是使用close函数,我调用了却无法关闭该弹窗。四处查资料,弹窗继承于Overlay类,就想用removeOverlay方法,但还是无法关闭弹窗;同时查看了close函数的源码,发现其本质也是调用removeOverlay方法,但都无法关闭该弹窗……
想问下这是不是百度地图的一个bug,大家有遇到过这个问题吗?代码能力有限,发出来共同探讨下🙁
主要参考的是这位博主的代码:https://blog.csdn.net/dandan__666/article/details/122877124
可能不是百度地图的一个 bug,而是由于代码逻辑或调用方式的问题。close()
方法和 removeOverlay()
方法都可以在百度地图中关闭信息弹窗,但请确保正确的调用方式。
使用 close()
方法时,需要确保 InfoBox 对象已经正确初始化并成功显示在地图上。然后,可以通过以下方式调用该方法来关闭信息弹窗:
infoBox.close();
其中 infoBox
是你创建的 InfoBox 对象的引用。
使用 removeOverlay()
方法时,需要首先获取当前地图上的所有覆盖物,并找到你创建的自定义样式信息弹窗对象(即 InfoBox 对象),然后再移除它。具体示例代码如下:
var overlays = map.getOverlays();
for (var i = 0; i < overlays.length; i++) {
if (overlays[i].toString() == "[object InfoBox]") {
map.removeOverlay(overlays[i]);
}
}
其中 map
是你创建的百度地图对象的引用。
如果以上两种方法都无法关闭信息弹窗,请检查以下几点:
另外,建议你对代码进行调试并检查浏览器的控制台是否有错误或警告消息输出。这样可以帮助你更快地解决问题并了解程序状态的细节。