Javascript 如何使用setInterval更新循环中infowindow的内容
每次循环以指定的setInterval运行时,我都无法更新infowindow内容。infowindow的内容每1秒都会更改每个标记数组…但是如果我将闭包放入If语句中,我就会遇到问题。5分钟后,浏览器将崩溃,因为每1秒添加一次侦听器。我只想更新每个标记的内容。我该如何做 先谢谢你Javascript 如何使用setInterval更新循环中infowindow的内容,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,每次循环以指定的setInterval运行时,我都无法更新infowindow内容。infowindow的内容每1秒都会更改每个标记数组…但是如果我将闭包放入If语句中,我就会遇到问题。5分钟后,浏览器将崩溃,因为每1秒添加一次侦听器。我只想更新每个标记的内容。我该如何做 先谢谢你 var map; var marker; var markerarray =[]; setInterval(function(){ $.ajax({ type: "post", url: "ve
var map;
var marker;
var markerarray =[];
setInterval(function(){
$.ajax({
type: "post",
url: "vehiclecordinates.php",
success: function(data){
coordinates = data.latlng;
vehiclename = data.vehiclename;
heading = data.heading;
devname = data.vehiclename;
thedate = data.trackdate;
for (var i = 0; i < coordinates.length; i++) {
newcoordinate = new google.maps.LatLng(coordinates[i].split(",")[0],coordinates[i].split(",")[1]);
if (markerarray[vehiclename[i]] && markerarray[vehiclename[i]].setPosition){
markerarray[vehiclename[i]].icon.rotation = parseInt(heading[i]);
markerarray[vehiclename[i]].setPosition(newcoordinate);
var con = '<div style="font: 11px arial,tahoma,helvetica,sans-serif;">Vehicle Name:' + devname + '<br/>' +'Date='+thedate+'</div>';
}else {
marker = new MarkerWithLabel({
map:map,
labelClass: "mylabels",
labelStyle: {opacity: 1.0},
labelContent: '<div>'+ vehiclename[i]+'</div>',
icon:{
path: google.maps.SymbolPath.CIRCLE,
scale:.7,
strokeColor: 'white',
strokeWeight: .10,
fillOpacity: 1,
fillColor: '#404040',
offset: '5%',
rotation: parseInt(heading[i]),
anchor: new google.maps.Point(10, 50)
}
});
marker.setPosition(newcoordinate);
markerarray[vehiclename[i]] = marker;
var con = '<div style="font: 11px arial,tahoma,helvetica,sans-serif;">Vehicle Name:' + devname + '<br/>' +'Date='+thedate+'</div>';
google.maps.event.addListener( marker, 'click', (function (marker, con, infowindow) {
return function () {
infowindow.setContent(con);
infowindow.open(map, marker);
};
})( marker, con, infowindow));
}
}
}
});
},1000);
var映射;
var标记;
var-markerary=[];
setInterval(函数(){
$.ajax({
类型:“post”,
url:“vehiclecordinates.php”,
成功:功能(数据){
坐标=data.latlng;
vehiclename=data.vehiclename;
heading=data.heading;
devname=data.vehiclename;
thedate=data.trackdate;
对于(变量i=0;i '+'日期='+thedate+'';
}否则{
标记=新标记WithLabel({
地图:地图,
标签类:“mylabels”,
标签样式:{opacity:1.0},
labelContent:''+vehiclename[i]+'',
图标:{
路径:google.maps.SymbolPath.CIRCLE,
比例:.7,
strokeColor:'白色',
冲程重量:.10,
不透明度:1,
填充颜色:'#404040',
抵销:“5%”,
轮换:parseInt(标题[i]),
主持人:新谷歌地图点(10,50)
}
});
标记器。设置位置(新坐标);
markerarray[vehiclename[i]]=标记器;
变量con='车辆名称:'+devname+'
'+'日期='+thedate+'';
google.maps.event.addListener(标记,'单击',(函数(标记,图标,信息窗口){
返回函数(){
infowindow.setContent(con);
信息窗口。打开(地图、标记);
};
})(标记、图标、信息窗口);
}
}
}
});
},1000);
您需要命名您的匿名clickEventListener
函数
unbind()
该函数,或者搜索它是否存在,然后不添加bool
:clickSet=true
,该设置是在调用eventlistener后设置的函数(标记、图标、信息窗口){
返回函数(){
infowindow.setContent(con);
信息窗口。打开(地图、标记);
};
};
var映射;
var标记;
var-markerary=[];
setInterval(函数(){
$.ajax({
类型:“post”,
url:“vehiclecordinates.php”,
成功:功能(数据){
坐标=data.latlng;
vehiclename=data.vehiclename;
heading=data.heading;
devname=data.vehiclename;
thedate=data.trackdate;
对于(变量i=0;i '+'日期='+thedate+'';
}否则{
标记=新标记WithLabel({
地图:地图,
标签类:“mylabels”,
标签样式:{opacity:1.0},
labelContent:''+vehiclename[i]+'',
图标:{
路径:google.maps.SymbolPath.CIRCLE,
比例:.7,
strokeColor:'白色',
冲程重量:.10,
不透明度:1,
填充颜色:'#404040',
抵销:“5%”,
轮换:parseInt(标题[i]),
主持人:新谷歌地图点(10,50)
}
});
标记器。设置位置(新坐标);
markerarray[vehiclename[i]]=标记器;
变量con='车辆名称:'+devname+'
'+'日期='+thedate+'';
google.maps.event.addListener(标记“click”,随便什么);
}
}
}
});
},1000);
如何在匿名clickeventlistener上命名?在变量映射之前代码>将其初始化<代码>函数somename(arumges){stuffToDo();}
。然后将其称为.addListener(标记,'click',somename)
,stufftoddo()中包含什么?为什么它在任何地方都没有参数?google.maps.event.addListener(标记“click”,随便什么);函数中给出了参数。如果需要,可以添加它们。
function whatever(marker, con, infowindow) {
return function () {
infowindow.setContent(con);
infowindow.open(map, marker);
};
};
var map;
var marker;
var markerarray =[];
setInterval(function(){
$.ajax({
type: "post",
url: "vehiclecordinates.php",
success: function(data){
coordinates = data.latlng;
vehiclename = data.vehiclename;
heading = data.heading;
devname = data.vehiclename;
thedate = data.trackdate;
for (var i = 0; i < coordinates.length; i++) {
newcoordinate = new google.maps.LatLng(coordinates[i].split(",")[0],coordinates[i].split(",")[1]);
if (markerarray[vehiclename[i]] && markerarray[vehiclename[i]].setPosition){
markerarray[vehiclename[i]].icon.rotation = parseInt(heading[i]);
markerarray[vehiclename[i]].setPosition(newcoordinate);
var con = '<div style="font: 11px arial,tahoma,helvetica,sans-serif;">Vehicle Name:' + devname + '<br/>' +'Date='+thedate+'</div>';
}else {
marker = new MarkerWithLabel({
map:map,
labelClass: "mylabels",
labelStyle: {opacity: 1.0},
labelContent: '<div>'+ vehiclename[i]+'</div>',
icon:{
path: google.maps.SymbolPath.CIRCLE,
scale:.7,
strokeColor: 'white',
strokeWeight: .10,
fillOpacity: 1,
fillColor: '#404040',
offset: '5%',
rotation: parseInt(heading[i]),
anchor: new google.maps.Point(10, 50)
}
});
marker.setPosition(newcoordinate);
markerarray[vehiclename[i]] = marker;
var con = '<div style="font: 11px arial,tahoma,helvetica,sans-serif;">Vehicle Name:' + devname + '<br/>' +'Date='+thedate+'</div>';
google.maps.event.addListener( marker, 'click', whatever);
}
}
}
});
},1000);