Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用setInterval更新循环中infowindow的内容_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 如何使用setInterval更新循环中infowindow的内容

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

每次循环以指定的setInterval运行时,我都无法更新infowindow内容。infowindow的内容每1秒都会更改每个标记数组…但是如果我将闭包放入If语句中,我就会遇到问题。5分钟后,浏览器将崩溃,因为每1秒添加一次侦听器。我只想更新每个标记的内容。我该如何做

先谢谢你

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
函数

  • 然后使用JavaScript

  • 如果使用jquery添加eventlistener,则可以轻松地
    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);