百度地图自动循环打开infoWindow信息窗口
需求是打开地图时自动循环打开信息窗口并且可以手动点击打开窗口,关闭手动选择的窗口后继续循环打开信息窗口,效果如下
代码如下
<!--定时任务-->
var infoWindows = new Array();//InfoWindow数组
var coords = new Array();//coord数组
var clickInfoWindow;//当前点击的InfoWindow
var interval = setInterval(open, 3000);
<!--打开信息窗口-->
var i = 0;
function open() {
if (!infoWindows[i].isOpen()) {
map.openInfoWindow(infoWindows[i], coords[i]); //自动开启信息窗口
}
if (i == infoWindows.length - 1) {
i = 0;
} else {
i++;
}
};
<!--监测信息窗口关闭-->
function func() {
if (clickInfoWindow.isOpen()==false){
clearInterval(interval);//停止监测窗口
interval = setInterval(open, 3000);//自动开启信息窗口
}
};
<!--获取站点信息-->
function zhandian() {
$.ajax({
type: "POST",
url: "../api/zhandian.json",
success: function (res) {
var data = res.data;
for (var i = 0; i < data.length; i++) {
let coord = new BMapGL.Point(data[i].longitude, data[i].latitude);
coords[i] = coord;
let marker = new BMapGL.Marker(coord); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
let opts = {
width: 100, // 信息窗口宽度
height: 50, // 信息窗口高度
title: data[i].name, // 信息窗口标题
}
let infoWindow = new BMapGL.InfoWindow("地址:" + data[i].location + "<br>联系电话:" + data[i].phone, opts); // 创建信息窗口对象
infoWindows[i] = infoWindow;
marker.addEventListener("click", function () {
map.openInfoWindow(infoWindow, coord); //开启信息窗口
clearInterval(interval);//停止自动开启信息窗口
clickInfoWindow=infoWindow;
interval = setInterval(func, 1000);//监测信息窗口是否关闭
});
}
}, error: function () {
layer.msg("获取数据失败");
}
});
};