2013-01-09 30 views
2

我正在写这段代码在一段时间间隔后调用一个函数,但函数没有执行它的功能。当我通常调用函数pus()时,它是运行但setInterval它不工作,请给我它的解决方案。在谷歌地图的另一个函数内调用setinterval的函数apv v3

var ltnlg = null; 
var flightPlanCoordinates = []; 
var nl2 = 10.9646; 
var ng2 = 72.8787; 
var lt2, ln2; 
var ltnlg = null; 

function lin() { 
      flightPlanCoordinates = [ 
    new google.maps.LatLng(29.0167, 77.3833), 
    new google.maps.LatLng(21.7679, 78.8718), 
    new google.maps.LatLng(18.9647, 72.8258) 
    ]; 

      var flightPath = new google.maps.Polyline({ 
       path: flightPlanCoordinates, 
       strokeColor: "#FF0000", 
       strokeOpacity: 1.0, 
       strokeWeight: 2 
       }); 

      flightPath.setMap(map); 
      pl = new google.maps.Polyline(); 
      // window.setInterval("pus()", 10000); 
      pus(); 

      } 
     } 

     function pus() { 



      ltnlg = new google.maps.LatLng(nl2, ng2); 
      flightPlanCoordinates.push(ltnlg); 
      lt2 = nl2; 
      n12 = lt2 + 0.0660; 
      ln2 = ng2; 
      ng2 = ln2 + 0.0660; 

     } 

回答

2

不要将回调作为字符串传递。

window.setInterval(pus, 10000); 

,或者如果你想通过一些PARAMS

window.setInterval(function() { 
    pus(a, b, c); 
}, 10000); 
+0

但仍然无法运行该代码 –

+0

window.setInterval(pus,10000); –

1

这里的问题不应该是“为什么这并没有在使用setInterval工作”,应该是“为什么它从工作内功能“,因为它不应该。

我猜多边形的绘制是一个异步过程,当您从函数内部调用pus()时,它不会完成,这就是为什么在flightPlanCoordinates上所做的更改仍然会产生效果。

但是到了经修改的路径适用于折线正确的做法是在pus()调用:

flightPath.setPath(flightPlanCoordinates); 

(注:你必须让flightPath全球能够从lin()外部访问它)

相关问题